Javascript-使用数组遍历字段?
我有一个表单,希望验证它包含的几个字段是否有条目 因此,我有以下几点:Javascript-使用数组遍历字段?,javascript,Javascript,我有一个表单,希望验证它包含的几个字段是否有条目 因此,我有以下几点: var requiredFields = array( 'Delivery_first_name', 'Delivery_last_name', 'Delivery_address',
var requiredFields = array(
'Delivery_first_name',
'Delivery_last_name',
'Delivery_address',
'Delivery_city',
'Delivery_zip',
'Delivery_phone'
);
for(var field in requiredFields)
{
if(document.ezpay.field.value.length == 0)
{
document.ezpay.field.style.cssText = 'background:red;';
}
}
然而,它似乎不起作用。我的想法是,if(document.ezpay.field.value.length==0)
“的字段
部分没有被评估
换句话说,语句的执行方式是if(document.ezpay.field.value.length==0)
而不是if(document.ezpay.Delivery_first_name.value.length==0)。
有人能证实这个信念吗?更重要的是,能不能给我一些指导,说明为什么上述方法不起作用
上面的目标是遍历已定义的字段,并将任何空字段的CSS样式背景设置为红色
谢谢!:)只需将输入字段设置为具有相同的名称和id属性,并使用:
if(document.getElementById(field).value.length == 0)
{
document.getElementById(field).style.cssText = 'background:red;';
}
也许:
我不确定js在使用点表示法时是否会计算您的
字段
字符串。Uhmm…尝试为字段分配属性“id”
<input type="text" name="FIELDNAME" id="FIELDNAME" />
或者您可以尝试使用jquery和jquery validate…更简单、更可自定义。首先,您不应该在中使用
for…对数组进行迭代,因为该构造用于枚举对象属性
其次,当您想要访问名为字段
的变量中包含其名称的属性时,您正在尝试访问名为字段
的属性。请尝试:
for (var i = 0, j = requiredFields.length; i < j; i++)
{
if (document.ezpay[requiredFields[i]].value.length == 0)
{
document.ezpay[requiredFields[i]].style.cssText = 'background:red;';
}
}
for(变量i=0,j=requiredFields.length;i
NickFitz的想法是正确的
下面是我将如何在纯JS中实现它
var requiredFields = ['Delivery_first_name',
'Delivery_last_name',
'Delivery_address',
'Delivery_city',
'Delivery_zip',
'Delivery_phone'];
function validate(theForm) {
for(var i=0,n=requiredFields.length;i<n;i++) {
var field = theForm[requiredFields[i]];
if (field.value.length == 0) {
field.style.backgroundColor ="red";
return false;
}
else field.style.backgroundColor ="white";
}
return true; // allow submit
}
window.onload=function(){
document.forms[0].onsubmit=function() { return validate(this);}
}
var requiredFields=['Delivery\u first\u name',
“交货姓”,
“送货地址”,
“交货城市”,
“送货上门”,
“送货电话”];
函数验证(theForm){
对于(var i=0,n=requiredFields.length;i人们认为没有JQuery什么都做不了,这是怎么回事?为了四行代码,真的不值得加载整个库。这取决于任务……一些任务更适合使用简单的javascript……另一些任务更容易使用像JQuery这样的框架……你应该ally可能会使用现成的表单验证插件。我真的认为你应该在编程之前理解javascript。数组声明是错误的。循环是错误的。你应用样式的方式是错误的。请自己找一本漂亮的js手册并完成它。尝试:谢谢你的澄清。这正是我需要的。Thank向您提供附加代码,并显示其他可以执行的操作。
for (var i = 0, j = requiredFields.length; i < j; i++)
{
if (document.ezpay[requiredFields[i]].value.length == 0)
{
document.ezpay[requiredFields[i]].style.cssText = 'background:red;';
}
}
var requiredFields = ['Delivery_first_name',
'Delivery_last_name',
'Delivery_address',
'Delivery_city',
'Delivery_zip',
'Delivery_phone'];
function validate(theForm) {
for(var i=0,n=requiredFields.length;i<n;i++) {
var field = theForm[requiredFields[i]];
if (field.value.length == 0) {
field.style.backgroundColor ="red";
return false;
}
else field.style.backgroundColor ="white";
}
return true; // allow submit
}
window.onload=function(){
document.forms[0].onsubmit=function() { return validate(this);}
}
function validate(theForm) {
var isOk = true;
for(var i=0,n=requiredFields.length;i<n;i++) {
var field = theForm[requiredFields[i]];
if (field.value.length == 0) {
field.style.backgroundColor ="red";
isOk=false;
}
else field.style.backgroundColor ="white";
}
return isOk; // allow or disallow submit
}