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
}