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

时间:2012-05-05 04:28:35

标签: javascript arrays forms validation

我似乎真的陷入困境。我有一个函数来检查所有表单输入字段是否等于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;
}

然后我使用另一个功能:

function checkform()
{
  if(checkempty)
  {
     display_errormessage("One or more fields empty!");
  }
  else
  {
     alert("Thanks for you input!");
  }
 }

display_errormessage()函数只是将错误消息放入表单顶部的div中,以便在表单不完整时显示错误消息。

谁能看到我出错的地方?

提前感谢您的帮助!

戴夫。

4 个答案:

答案 0 :(得分:0)

if(!myArray[0])应该是if(!myArray[i]),但更大的一点是你只是验证该值不是假的(null,'',0,false等),而不是它的适合任务。

答案 1 :(得分:0)

猜猜你不需要这个功能,因为你已经修好了你的功能,但我会留在这里,因为它可能会对将来有所帮助。 JSFiddle

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

答案 2 :(得分:0)

根据您的input字段的格式为form

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!" );
}

答案 3 :(得分:0)

首先,不调用函数checkformif (checkform)应为if (checkform()),否则您只会测试函数的可用性,而不是结果。

然后if (!myArray[0])应为if (!myArray[i]),不仅要测试名字

或者更好,if (myArray[i].length==0)确保显式测试空字符串而不只是进行隐式布尔转换(javascript评估0==""true