JavaScript警报消息无效

时间:2018-05-04 20:37:32

标签: javascript forms validation

下面是我放在一起验证5个字段的代码,这些字段具有9个字段,这些字段是必需的。我创建了变量并将它们放入一个数组中。从那里我有一个循环遍历此数组的函数,如果该字段留空,则弹出警报。

我遇到的问题是单击按钮时警报不会弹出。

var uName=document.getElementByName('userName');
var pword=document.gelElementByName('password');
var verify=document.getElementByName('passwordVerify');
var fName=document.getElementByName('firstName');
var lName=document.getElementByName('lastName');
var field=[uName,pword,verify,fName,lName];

function validateForm(form) {
  for(var i = 0; i < form.field.length; i++){
    if(form.field[i].value.length == 0){
       alert(form.field[i].name+' is required. Please populate');
       form.field[i].focus();
       return false;
    }
   } return true;
} 

不确定我做错了什么或导致错误的原因。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

&#13;
&#13;
function validateForm() {
  var uName = document.getElementById('userName');
  var pword = document.getElementById('password');
  var verify = document.getElementById('passwordVerify');
  var fName = document.getElementById('firstName');
  var lName = document.getElementById('lastName');
  var field = [uName, pword, verify, fName, lName];

  for (var i = 0; i < field.length; i++) {
    if (!field[i].value) {
      alert(field[i].name + ' is required. Please populate');
      field[i].focus();
      return false;
    }
  }
  return true;
}
&#13;
<form>
  <input type="text" id="userName" name="userName" /><br/>
  <input type="text" id="password" name="password" /><br/>
  <input type="text" id="passwordVerify" name="passwordVerify" /><br/>
  <input type="text" id="firstName" name="firstName" /><br/>
  <input type="text" id="lastName" name="lastName" /><br/>
  <button onclick="validateForm();">Submit</button>
</form>
&#13;
&#13;
&#13;

现在,我做了以下更改:

为简单起见,我在整个代码中将getElementByName更改为getElementById; 我删除了该功能的参数,并将form.field更改为field,因为......好吧,第一个是错误的。

我还将迭代测试更改为!field[i].value,这相当于测试值是否有长度,但似乎更适合我。

关于我所做的一切,以及在表单元素中添加ID。

P.S:这是我在这里的第一个详细答案,非常感谢您的反馈! :)