选择使用jQuery空的文本输入(Selecting empty text input using

2019-06-18 13:54发布

我如何使用jQuery找出空的文本框? 我想使用选择它,如果它是完全可以做到的。 另外,我必须,因为在我想利用这个我不想选择所有的文本输入的实际代码的ID选择。

在我的下面的两个代码的例子的第一个准确显示键入到文本框“TXT2”由用户的值。 第二个例子标识,有一个空的文本框,但如果你在它填补它仍然认为这是空的。 为什么是这样?

这可以只用选择做什么?

此代码报告在文本框“TXT2”的值:

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                $('#cmdSubmit').click(function() {
                    alert($('[id=txt2]').val());
                });             
            });
        </script>
    </head>
    <body>
        <form>
            <input type="text" name="txt1" id="txt1" value="123" /><br />
            <input type="text" name="txt2" id="txt2" value="" /><br />
            <input type="text" name="txt3" id="txt3" value="abc" /><br />
            <input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
        </form>
    </body>
</html>

此代码始终报告文本框“TXT2”为空:

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                $('#cmdSubmit').click(function() {
                    if($('[id^=txt][value=""]').length > 0) {
                        if (!confirm("Are you sure you want to submit empty fields?")) {
                            if (event.preventDefault) {
                                event.preventDefault();
                            } else {
                                event.returnValue = false;
                            }
                        }
                    }
                });             
            });
        </script>
    </head>
    <body>
        <form>
            <input type="text" name="txt1" id="txt1" value="123" /><br />
            <input type="text" name="txt2" id="txt2" value="" /><br />
            <input type="text" name="txt3" id="txt3" value="abc" /><br />
            <input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
        </form>
    </body>
</html>

Answer 1:

其他方式

$('input:text').filter(function() { return $(this).val() == ""; });

要么

$('input:text').filter(function() { return this.value == ""; });

要么

// WARNING: if input element does not have the "value" attribute or this attribute was removed from DOM then such selector WILL NOT WORK! 
// For example input with type="file" and file does not selected.
// It's prefer to use "filter()" method.
// Thanks to @AaronLS
$('input:text[value=""]');

工作演示

从演示代码

jQuery的

 $(function() {

  $('#button').click(function() {

    var emptyTextBoxes = $('input:text').filter(function() { return this.value == ""; });
    var string = "The blank textbox ids are - \n";

    emptyTextBoxes.each(function() {
      string += "\n" + this.id;
    });
    alert(string);
  });

});


Answer 2:

你也可以定义自己的选择做到这一点:

$.extend($.expr[':'],{
    textboxEmpty: function(el){
        return $(el).val() === "";
    }
});

然后访问他们像这样:

alert($(':text:textboxEmpty').length); //alerts the number of text boxes in your selection


Answer 3:

$(":text[value='']").doStuff();

顺便说一句,你的召唤:

$('input[id=cmdSubmit]')...

可以大大简化和与加速:

$('#cmdSubmit')...


Answer 4:

正如在排名靠前的文章中提到,下面有滋滋声发动机的工作原理。

$('input:text[value=""]');

在评论,有人指出,去除:text选择的部分使得选择失败。 我相信发生了什么事是这种嘶嘶声实际上依靠内置的选择器引擎时可能的浏览器。 当:text被添加到选择,就变成了非标准的CSS选择器,从而必须由需求本身灒处理。 这意味着,灒检查,而不是在源HTML中指定的“value”属性的输入的当前值,。

所以这是一个聪明的方法来检查空文本字段,但我认为它依赖于特定的滋滋声引擎的行为(即使用INPUT,而不是在源代码中定义的属性的当前值)。 虽然灒可能会返回此选择器匹配的元素, document.querySelectorAll将只返回具有元素value=""在HTML。 买者自负。



Answer 5:

$("input[type=text][value=]")

之后尝试了很多的版本,我发现这是最合理的。

请注意, text是区分大小写的。



Answer 6:

在@詹姆斯·怀斯曼的答案的基础上,我使用这样的:

$.extend($.expr[':'],{
    blank: function(el){
        return $(el).val().match(/^\s*$/);
    }
});

这将赶上包含除了那些“真正的”空只有空白的投入。

例如: http://jsfiddle.net/e9btdbyn/



Answer 7:

我建议:

$('input:text:not([value])')


Answer 8:

有很多答案在这里暗示类似的[value=""]但我不认为实际工作。 。 。 或者至少,用法并不一致。 我试图做同样的事情,选择与某个字符串,也没有输入的数值开始ID的所有投入。 我尝试这样做:

$("input[id^='something'][value='']")

但它不工作。 也不逆转他们。 看到这个小提琴 。 唯一的办法,我发现正确地选择与IDS一个字符串和不输入的值开始都投入

$("input[id^='something']").not("[value!='']")

$("input[id^='something']:not([value!=''])")

但很明显,双重否定变成真正令人困惑。 也许,拉斯凸轮的第一个答案(带过滤功能)是最明显的方法。



Answer 9:

这将选择以“TXT”开头的ID空的文本输入:

$(':text[value=""][id^=txt]')


文章来源: Selecting empty text input using jQuery