javascript 文本验证不起作用。警报消息不显示

标签 javascript forms validation

我有一个简单的表单验证脚本:

<script language=”javascript”>
    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 处理程序调用该函数,但单击“提交”时没有任何反应。它直接进入 PHP 脚本,而不是 javascript '拦截'它。有什么想法吗?

表单 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>

警报消息不显示?怎么了??

最佳答案

好吧,我对你的代码进行了一些重构,以使其更有意义和可维护性

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;
}​

and here is a sample

关于javascript 文本验证不起作用。警报消息不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220078/

相关文章:

javascript - 在 JavaScript 代码中从 Controller 调用函数

使用 HttpResponseRedirect 的 Django 表单重定向

php - 如何在 LARAVEL 中指定表单名称

node.js - Neo4j 日期时间验证错误

validation - Laravel 小数验证规则

javascript - 如何使用 Require JS 配置具有第三方 js 依赖项的日期选择器?

javascript - Typescript 0.9.1 : Very slow intellisense Should i go back to 0. 8.3 以获得更好的性能?

Javascript 跨浏览器问题

javascript - 选择多种表单中的表单数据

java - 我需要java中的验证方法