将表单输入字段加载到javascript数组中,然后验证
我似乎真的被什么东西卡住了。我有一个函数来检查所有表单输入字段是否都等于null,或者是否都可以,但我想看看是否有其他方法可以做到这一点,将所有字段加载到javascript数组中,然后执行for循环和if语句来检查是否有任何字段为空,不幸的是,我似乎无法使这项工作,并怀疑我是否只是错过了一些地方。这是我的密码:将表单输入字段加载到javascript数组中,然后验证,javascript,arrays,forms,validation,Javascript,Arrays,Forms,Validation,我似乎真的被什么东西卡住了。我有一个函数来检查所有表单输入字段是否都等于null,或者是否都可以,但我想看看是否有其他方法可以做到这一点,将所有字段加载到javascript数组中,然后执行for循环和if语句来检查是否有任何字段为空,不幸的是,我似乎无法使这项工作,并怀疑我是否只是错过了一些地方。这是我的密码: function checkempty() { fname = document.getElementById("firstname").value; lname =
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;
}
display_errormessage函数只是将错误消息放入表单顶部的div中,以便在表单不完整时显示错误消息
有人能看出我哪里出了错吗
提前感谢您的帮助
戴夫。如果!myArray[0]应为if!myArray[i],但更重要的一点是,您只是在验证该值是否为Falsy null、0、false等,而不是验证它是否适合此任务。我猜您不需要此函数,因为您已经修复了您的函数,但我将其保留在这里,因为它可能在将来有所帮助 根据您的输入字段采用名为表单的表单: 首先,不调用函数checkform。if-checkform应该是if-checkform,否则您将只测试函数的可用性,而不是测试结果 那么如果!myArray[0]应为if!myArray[i]不仅测试名字
或者更好,如果myArray[i].length==0,则确保显式测试空字符串,而不仅仅是执行隐式布尔转换javascript将0==true计算为true您的代码只检查循环中数组中的第一个元素。我想你是想说如果!myArray[i]而不是if!myArray[0]?刚刚更改了代码,但在填写完所有字段后,它仍然坚持其中一个字段仍然为空,而不是向我发送带有感谢信息的警报框。有什么想法吗?我不知道为什么做得不好。我想在数组中循环,找出是否有任何字段是空的,如果没有,则显示一条错误消息,如果没有,则显示一个警告框,表示感谢您的输入!我试过这样做:ifmyArray[I]==null | | myArray[I]={return true;}也不起作用:-不幸的是,其中一个是提供注释的文本区域,当然其中一个输入是提交按钮。完成了!谢谢你的帮助,在看了你建议的代码后,我意识到我错在哪里了。哦,很高兴我能帮上忙:P我还修改了我的函数,它现在应该可以用于输入文本和文本区域了。
function checkform()
{
if(checkempty)
{
display_errormessage("One or more fields empty!");
}
else
{
alert("Thanks for you input!");
}
}
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;
}
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!" );
}