将表单输入字段加载到javascript数组中,然后验证

将表单输入字段加载到javascript数组中,然后验证,javascript,arrays,forms,validation,Javascript,Arrays,Forms,Validation,我似乎真的被什么东西卡住了。我有一个函数来检查所有表单输入字段是否都等于null,或者是否都可以,但我想看看是否有其他方法可以做到这一点,将所有字段加载到javascript数组中,然后执行for循环和if语句来检查是否有任何字段为空,不幸的是,我似乎无法使这项工作,并怀疑我是否只是错过了一些地方。这是我的密码: function checkempty() { fname = document.getElementById("firstname").value; lname =

我似乎真的被什么东西卡住了。我有一个函数来检查所有表单输入字段是否都等于null,或者是否都可以,但我想看看是否有其他方法可以做到这一点,将所有字段加载到javascript数组中,然后执行for循环和if语句来检查是否有任何字段为空,不幸的是,我似乎无法使这项工作,并怀疑我是否只是错过了一些地方。这是我的密码:

function checkempty()
{
    fname = document.getElementById("firstname").value;
    lname = document.getElementById("lastname").value;
    fage = document.getElementById("age").value;
    addressl1 = document.getElementById("addressline1").value;
    addressl2 = document.getElementById("addressline2").value;
    ftown = document.getElementById("town").value;
    fcounty = document.getElementById("county").value;
    fpcode1 = document.getElementById("pcode1").value;
    fpcode2 = document.getElementById("pcode2").value;
    ftelephone = document.getElementById("telephone").value;
    fcomment = document.getElementById("comment").value;

    var myArray = [];
    myArray[0] = fname;
    myArray[1] = lname;
    myArray[2] = fage;
    myArray[3] = addressl1;
    myArray[4] = addressl2;
    myArray[5] = ftown;
    myArray[6] = fcounty;
    myArray[7] = fpcode1;
    myArray[8] = fpcode2;
    myArray[9] = ftelephone;
    myArray[10] = fcomment;

    for(i=0;i<myArray.length;i++)
    {
        if(!myArray[0])
        {
            return true;
        }
    }
    return false;
}
display_errormessage函数只是将错误消息放入表单顶部的div中,以便在表单不完整时显示错误消息

有人能看出我哪里出了错吗

提前感谢您的帮助


戴夫。

如果!myArray[0]应为if!myArray[i],但更重要的一点是,您只是在验证该值是否为Falsy null、0、false等,而不是验证它是否适合此任务。

我猜您不需要此函数,因为您已经修复了您的函数,但我将其保留在这里,因为它可能在将来有所帮助

根据您的输入字段采用名为表单的表单:

首先,不调用函数checkform。if-checkform应该是if-checkform,否则您将只测试函数的可用性,而不是测试结果

那么如果!myArray[0]应为if!myArray[i]不仅测试名字


或者更好,如果myArray[i].length==0,则确保显式测试空字符串,而不仅仅是执行隐式布尔转换javascript将0==true计算为true

您的代码只检查循环中数组中的第一个元素。我想你是想说如果!myArray[i]而不是if!myArray[0]?刚刚更改了代码,但在填写完所有字段后,它仍然坚持其中一个字段仍然为空,而不是向我发送带有感谢信息的警报框。有什么想法吗?我不知道为什么做得不好。我想在数组中循环,找出是否有任何字段是空的,如果没有,则显示一条错误消息,如果没有,则显示一个警告框,表示感谢您的输入!我试过这样做:ifmyArray[I]==null | | myArray[I]={return true;}也不起作用:-不幸的是,其中一个是提供注释的文本区域,当然其中一个输入是提交按钮。完成了!谢谢你的帮助,在看了你建议的代码后,我意识到我错在哪里了。哦,很高兴我能帮上忙:P我还修改了我的函数,它现在应该可以用于输入文本和文本区域了。
function checkform()
{
  if(checkempty)
  {
     display_errormessage("One or more fields empty!");
  }
  else
  {
     alert("Thanks for you input!");
  }
 }
function checkform()
{
    arr1 = document.getElementsByTagName('input');
    arr1 = Array.prototype.slice.call(arr1);
    arr2 = document.getElementsByTagName('textarea');
    arr2 = Array.prototype.slice.call(arr2);
    arrs = arr1.concat(arr2);

    for(i=0;i<arrs.length;i++)
    {
        if (arrs[i].type == "text" || arrs[i].type == "textarea")
        {
            if (arrs[i].value == '')
            {
                alert("Fill all fields before submitting!");
                return false;
            }
        }
    }
    alert("Thanks for your input!");
    return true;
}
var allTrue = [].every.call( document.forms.form.elements, function( el ) {
    return !!el.value;
} );
if ( allTrue ) {
    alert( "Thanks for your input!" );
}
else {
    alert( "Some fields are missing!" );
}