动态元素ID的jquery验证插件

时间:2012-12-24 06:59:59

标签: jquery jquery-validate

我需要验证一堆具有动态ID的文本框。这些元素可以在文档就绪时使用,而不是动态插入。

<input type="text" class="y"/>
<input type="text" class="y"/>
<input type="text" class="y"/>
<input type="text" class="y"/>
<input type="text" class="y"/>

规则是前两个字段之一是必需的。我不知道如何在不知道元素ID的情况下进行验证。

编辑:输入元素是由循环生成的,因此我无法为前两个添加类必需。我正在寻找使用jquery Validation插件http://docs.jquery.com/Plugins/Validation

的解决方案

5 个答案:

答案 0 :(得分:2)

试试这个

$(document).ready(function() {
if($('input:text:eq(0)').val()=="" && $('input:text:eq(1)').val()==""){
 //show error
}
});

答案 1 :(得分:2)

以下使用过滤器创建值为非空的2个输入的集合。测试长度提供有效性测试

var valid=$('input').slice(0,2).filter(function(){
   return $(this).val() !='';
}).length

if(valid){
  /* can submit*/
}

验证插件的解决方案:

 $('input:lt(2)').addClass('required');

注意:调整选择器以更好地适应形式,因此它不会找到页面中的每个输入,或者表单中的输入不是您要验证的集合的一部分。您可以将这些输入包装在字段集中,并为字段集提供ID

答案 2 :(得分:1)

$(document).ready(function() {
if($('input:text:lt(2)').val()=="" ){
 //error 
}
});

答案 3 :(得分:1)

我认为你想要的是这个:

function isValid(){
    var cont=0;
    $('input:text').each(function(i, obj) {
        if(i<2 && obj.value){
             cont++; 
        }
      });
    return cont==2;
}

答案 4 :(得分:1)

试试这个:

你可以使用:lt();这样做:

$("form input:lt(2)");

这将选择匹配小于传递索引的所有元素,第一个和第二个元素是索引0和1,并且将匹配此选择器:)

相关问题