簡體   English   中英

將表單輸入字段加載到javascript數組中,然后進行驗證

[英]Loading form input fields into a javascript array and then validating

我似乎真的很固執。 我有一個函數來檢查所有表單輸入字段是否都等於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中以在表單不完整時顯示錯誤消息的函數。

誰能看到我哪里出問題了?

在此先感謝您的幫助!

戴夫

if(!myArray[0])應該是if(!myArray[i]) ,但更重要的是,您只是在驗證該值不是false(null,'',0,false等),並非適合該任務。

猜猜您將不需要此功能,因為您已經修復了它,但是我將其保留在此處,因為將來可能會有所幫助。 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;
}

根據您的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!" );
}

首先,不調用函數checkform if (checkform)應該是if (checkform())否則您將僅測試功能的可用性,而不測試結果。

那么if (!myArray[0])應該是if (!myArray[i]) ,不僅要測試名字

或者更好的是, if (myArray[i].length==0)要確保if (myArray[i].length==0)明確地測試空字符串,而不僅僅是進行隱式布爾轉換(javascript將0==""true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM