4

我需要验证一堆具有动态 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 验证插件http://docs.jquery.com/Plugins/Validation的解决方案

4

5 回答 5

2

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

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

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

验证插件的解决方案:

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

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

于 2012-12-24T07:17:04.967 回答
2

尝试这个

$(document).ready(function() {
if($('input:text:eq(0)').val()=="" && $('input:text:eq(1)').val()==""){
 //show error
}
});
于 2012-12-24T07:07:08.180 回答
1

我认为你想要的是这样的:

function isValid(){
    var cont=0;
    $('input:text').each(function(i, obj) {
        if(i<2 && obj.value){
             cont++; 
        }
      });
    return cont==2;
}
于 2012-12-24T07:14:19.593 回答
1
$(document).ready(function() {
if($('input:text:lt(2)').val()=="" ){
 //error 
}
});
于 2012-12-24T07:11:19.280 回答
1

尝试这个 :

你可以这样做:lt();

$("表单输入:lt(2)");

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

于 2012-12-24T07:17:50.897 回答