[英]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.