jQuery:文本框为空还是非空

4

我在页面上有多个文本框,假设有10个,其中4个具有"class=myClass"的类。我想知道是否所有这些带有"class=myClass"的文本框长度都为0,需要一条命令完成。

可能吗?

谢谢。

更新1

function MyValidation() {
    var res = true;
    if (!$("input:text.MyClass[value!='']").length) {
        alert("testing");
        res = false;
    }
    return res;
}

当你运行这段代码时,我总是收到一个“true”,从来没有“false”和“testing”。我尝试了每个答案的代码。

1
类名区分大小写。您应该写.myClass而不是.MyClass - Frédéric Hamidi
我再次检查了一遍,情况没问题。 - TheBoubou
很奇怪,它在这个fiddle上对我有效。 - Frédéric Hamidi
4个回答

5

这应该就足够了。

if ( $('.myClass').filter(function(){
                             return $(this).val() != '';
                           }).length == 0
   )
 {
  /* code to run when all are empty */

 }

示例 http://jsfiddle.net/gaby/QasRK/


为了适应字符串中的空格,请更改

return $(this).val() != '';

为了

return $(this).val().replace(/\s/g,'') != '';

这会在将文本与''比较之前去除其空格。


可以添加Trim()吗?文本框中的空格必须被视为空。 - TheBoubou
@Kris,类名是区分大小写的。如果你在HTML中使用myClass,那么在JavaScript中也应该使用相同的名称,而不是MyClass - Gabriele Petrioli

1

你可以写

if (!$(input.myClass).is(function() { return this.value.length > 0; }))

1

使用适当的 属性选择器 也可以完成这个任务:

if (!$("input:text.myClass[value!='']").length) {
    // All the .myClass text boxes are empty.
}

据我所知,没有使用 not()is()filter() 是不可能的。 - Frédéric Hamidi

0

如果你想要值:

var any = $("input:text.myClass").map(function() {
    var value = $.trim($(this).val());
    if (value != "") return value;
}).length > 0;

http://jsfiddle.net/hunter/e6yEd/


如果你不:

var any = $("input:text.myClass").filter(function() {
    return $.trim($(this).val()) != "";
}).length > 0;

http://jsfiddle.net/hunter/e6yEd/5/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接