jQuery:定位具有相同类的多个表单输入?

时间:2015-01-07 23:00:21

标签: jquery html forms

我正在尝试创建一个程序,该程序需要至少一个(未知数量,取决于先前的条件)不同的表单输入来包含数据,以便用户能够提交表单。我已成功设法为只存在一个输入字段的情况创建代码,但我不知道如何处理多个输入。

所有表单输入共享相同的公共类rs2,所以我的理论是希望我使用的jQuery代码(下面)能够定位该类的所有实例并验证是否在其中至少有一个不是空的,如果成功则返回true。但是,似乎只有jQuery代码检测到rs2类的第一个实例,因为 - 即使所有其他输入都包含数据 - 只要第一个输入框不包含,就会发出false值任何数据。

$( "form" ).submit(function( event ) {
  if( !$('.rs2').val() ) {
    event.preventDefault();
  }
});

如果rs2不包含数据,代码会阻止表单提交 - 这就是我想要的。但是,我的目的是使它,只要至少有一个rs2类包含数据,表单仍然会执行。我已经看过不同的方法了,但是目前我对这方面的一个很好的替代方案感到非常难过。

如果有人有任何想法,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用filter()创建具有值的元素的集合,然后检查集合的长度作为条件

$( "form" ).submit(function( event ) {

    var rs2HasVal = $('.rs2').filter(function(){
       return this.value !== '';
    }).length;

    if( !rs2HasVal ){
       event.preventDefault();
    }
});

答案 1 :(得分:0)

创建了一个小提琴:http://jsfiddle.net/chzzcosy/4/

你必须按照自己的喜好来实现它,但这就是我要做的事情:

HTML

<input type='text' class='rs2' />
<input type='text' class='rs2' />
<button id="submit">Check</button>

的Javascript

$('#submit').click(function (event) {
    var array = document.getElementsByClassName('rs2');
    var count = [];
    for (i = 0; i < array.length; i++) {

        count += array[i].value;
    }

    if (count.length === 0) {
        alert("prevented");
    } else alert("not prevented");

});