Javascript 如何根据条件在多组输入中执行验证

Javascript 如何根据条件在多组输入中执行验证,javascript,jquery,Javascript,Jquery,我通过克隆以下HTML模板,在按下(+)按钮的同时动态创建一组文本框: <div id= "other_leaders" class="controls form-input"> <input type="text" name="other_leader_fname[]" class="input_bottom other_leader_fname" id="other_leader_fname" placeholder="First Name" value="'.$val

我通过克隆以下HTML模板,在按下(+)按钮的同时动态创建一组文本框:

<div id= "other_leaders" class="controls form-input">
  <input type="text" name="other_leader_fname[]" class="input_bottom other_leader_fname" id="other_leader_fname" placeholder="First Name" value="'.$val[0].'" />
  <input type="text" name="other_leader_lname[]" class="input_bottom other_leader_lname" id="other_leader_lname"  placeholder="Last Name" value="'.$val[1].'" />
  <input type="text" name="other_leader_email[]" class="other_leader_email" id="other_leader_email" placeholder="Email Address" value="'.$val[2].'" />
  <input type="text" name="other_leader_org[]" class="other_leader_org" id="other_leader_org" placeholder="Organisation/College" value="'.$val[3].'" />
  <span  class="remove btn"><i class="icon-minus"></i></span>      
</div>
现在我的问题是,如果某个文本框组中的任何一个文本框字段由用户填充,如何对所有四个文本框执行空验证

例如:如果我在id为other_leader_fname的
中输入值,那么它应该对该特定组的其他三个文本框执行空验证


如何执行此操作?

尝试此操作,您可以使用以下代码将验证规则应用于div中的所有文本框:

$("#other_leaders :input[type='text']").each(function(){
                if($(this).val()=="" || !RegExpression.test($(this).val()))
                {
                    $(this).addClass('custom-error')
                    fnameflag = 0;

                }
            });

您可以使用迭代
.controls
,并使用检查每个组中的填充输入,以执行验证,如下所示:

$('.controls').each(function(){

  var $inputs = $(this).find('input');
  var filled = $inputs.filter(function(){
    return this.value != "";
  });
  if(filled.length){
     $inputs.each(function(){
        if($(this).val()=="" || !RegExpression.test($(this).val()))
        {
          $(this).addClass('custom-error')
          fnameflag = 0;
        }
      })
   }
});

旁注:由于上面是动态生成内容的模板,您应该删除
id
并使用class,因为
id
在文档中应该是唯一的。

因为您只有一个元素,所以不需要在其上循环:

var $othLeader = $("input[name*='other_leader_fname']");
if($othLeader.val()=="" || !RegExpression.test($othLeader.val())){
    $(this).addClass('custom-error');
    fnameflag = 0;
}


如果您有表单,那么您可以在表单的提交函数中对此进行验证。

您缺少一个分号
$(this).addClass('custom-error')
行,否则代码对我来说可以正常工作。你是否先包含jquery.validate文件?验证?想知道是否有任何答案有帮助。。?
var $othLeader = $("input[name*='other_leader_fname']");
if($othLeader.val()=="" || !RegExpression.test($othLeader.val())){
    $(this).addClass('custom-error');
    fnameflag = 0;
}