0

我似乎真的被什么东西困住了。我有一个函数来检查所有表单输入字段是否等于 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

4 回答 4

0

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

于 2012-05-05T04:35:54.507 回答
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;
}
于 2012-05-05T04:41:50.153 回答
0

First, function checkform is not called. The if (checkform) should be if (checkform()) or you will test only test the availability of the function, not the result.

Then the if (!myArray[0]) should be if (!myArray[i]) to not only test the firstname

Or better, if (myArray[i].length==0) to be sure to explicitly test for empty string and not just doing an implicit boolean conversion (javascript evaluate 0=="" as true)

于 2012-05-05T10:26:07.293 回答
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!" );
}
于 2012-05-05T05:29:09.987 回答