0

簡単なフォーム検証スクリプトがあります。

<script language=”javascript”&gt;
    function return validate_form(register)
 {      
if (""==document.forms.register.FNAME.value){
    alert("This field is required!");
    document.forms.register.FNAME.focus();
    return false;
}    
if (""==document.forms.register.LNAME.value){
    alert("This field is required!");
    document.forms.register.LNAME.focus();
    return false;
}
if (EMAIL.value.search( /^[a-zA-Z]+([_\.-]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([\.-]?[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,4})+$/ ) == -1){
    alert(“Wrong email”);
    return false;
}       
if('0'==document.forms.register.GENDER.value){
    alert("You must select an option!");
    document.forms.register.GENDER.focus();
    return false;
}
if (""==document.forms.register.ADDRESS.value){
    alert("This field is required!");
    document.forms.register.ADDRESS.focus();
    return false;
}
if (""==document.forms.register.CONTACTNO.value){
    alert("This field is required!");
    document.forms.register.CONTACTNO.focus();
    return false;
}
}
</script>

関数は onSubmit ハンドラーを使用して呼び出されますが、submit がクリックされても何も起こりません。javascript が「インターセプト」するのではなく、PHP スクリプトに直接アクセスします。何かご意見は?

フォーム HTML:

 <form name="register" action="register.php" method="POST" onsubmit="return validate_form(register);">
<table width="100%" border="0">
<tr>
  <td width="46%" height="24" align="right">First Name:</td>
  <td width="54%"><input name="FNAME" type="text" size"20" /></td>
</tr>
<tr>
  <td height="24" align="right">Last Name:</td>
  <td><input name="LNAME" type="text" size"20" /></td>
</tr>
<tr>
  <td height="24" align="right">Email Address</td>
  <td><input name="EMAIL" type="text" size"20" /></td>
</tr>
<tr>
  <td height="24" align="right">Gender:</td>
  <td><select name="GENDER">
      <option value="" selected="selected">- Select One -</option>
      <option value="Male">Male</option>
      <option value="Female">Female</option></select></td>
</tr>
<tr>
  <td height="24" align="right">Address:</td>
  <td><input name="ADDRESS" type="text" size"20" /></td>
</tr>
    <tr>
  <td height="24" align="right">Contact No.:</td>
  <td><input name="CONTACTNO" type="text" size"20" /></td>
</tr>
<tr>
  <td height="24" align="right">Password</td>
  <td><input name="PASSWORD" type="password" size"20" /></td>
</tr>
 <tr>
  <td height="24" align="right">Re-type Password</td>
  <td><input name="PASSWORD2" type="password" size"20" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="submit" type="submit" value="Register" /></td>
</tr>
</table>

</form>

警告メッセージが表示されませんか? なにが問題ですか??

4

3 に答える 3

4

さて、私はあなたのコードを少しリファクタリングして、より意味があり保守性を高めました

htmlの変更:

<form name="register" action="register.php" method="POST" onsubmit="return validate_form();">

サンプルJS:

function validate_form() {
    var frm = document.forms.register;
    function focus_and_false(el) {
        el.focus();
        return false;
    }
    if( frm.FNAME.value === "" ) { /* repeat this for all form elements you want to validate */
        alert("This field is required!");
        return focus_and_false(frm.FNAME); /* this is not the best, but i'm showing you how you can reduce overall code by not rewriting the same things. */
    }
    return true;
}​

これがサンプルです

于 2012-08-31T17:50:23.613 に答える
1

You have a HUGE syntax error in your javascript ...

function return validate_form(register)

should be

function validate_form(register)

Maybe you can start with that :)

And add an alert just after the function starts so you know that when you call it, it actually executes or at least tries to.

Another syntax error:

<script language=”javascript”&gt;

Should be

<script type="text/javascript">

And finally i would change the function name to

function validateForm(register)

Let me know if it works :)

于 2012-08-31T17:40:04.877 に答える
0

コードに中引用符があります

alert(“Wrong email”);  <---bad quotes

名前だけを使うべきではない

onsubmit="return validate_form(register);"

フォーム要素である現在のスコープを指す this を渡します。

onsubmit="return validate_form(this);"

電子メールとは何ですか?

EMAIL.value

要素名だけを参照しないでください。

于 2012-08-31T17:43:09.150 に答える