我似乎真的陷入困境。我有一个函数来检查所有表单输入字段是否等于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中,以便在表单不完整时显示错误消息。
谁能看到我出错的地方?
提前感谢您的帮助!
戴夫。
答案 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)
首先,不调用函数checkform
。 if (checkform)
应为if (checkform())
,否则您只会测试函数的可用性,而不是结果。
然后if (!myArray[0])
应为if (!myArray[i])
,不仅要测试名字
或者更好,if (myArray[i].length==0)
确保显式测试空字符串而不只是进行隐式布尔转换(javascript评估0==""
为true
)