在jQuery中,我如何只获取具有非空值的文本框?
示例:
<input type="text" id="i1" value="" />
<input type="text" id="i2" value="bla bla" />
<textarea id="i3">more bla bla</textarea>
<input type="text" id="i4" value="" />
如何编写一个只能输入i2和i3的查询? (一次性,我试图避免“for”循环)
谢谢!
答案 0 :(得分:8)
这可以胜任:
var $nonEmptyItems = $("input,textarea").filter(function() {
return $(this).val() != "";
});
答案 1 :(得分:5)
首先,您的HTML应该看起来像这样:
<input type="text" id="i1" value="">
<input type="text" id="i2" value="bla bla">
<textarea id="i3">more bla bla</textarea>
<input type="text" id="i4" value="">
我认为如果未指定输入字段,大多数浏览器将默认为type="text"
,但我认为您不能指望他们认为val
表示value
。最后,textarea文本必须介于<textarea>
标记之间。
关于你的问题。这条线将做你想要的:
$('input[type="text"], textarea').filter(function() { return $(this).val(); });
您可以使用jQuery的grep函数,该函数循环遍历数组并仅保留您传递给$.grep
的函数的值(从中返回真值)。在这种情况下,您传递的数组是与$('input[type="text"], textarea')
选择器匹配的jQuery对象数组,即文本字段和textareas。您传递的函数选择所需的元素只返回文本框或textarea的值。如果它为空,则返回值为falsy且节点被排除,如果它是任何非空字符串,则返回值为真,并包含该节点。
答案 2 :(得分:0)
如果您正在使用value属性,那么可以这样做:
$('input[value!=""], textarea[value!=""]')
答案 3 :(得分:0)
您可以将属性选择器与!=评估一起使用:
$("input[value!='')")