jQuery仅检索具有非空值的文本框

时间:2011-08-19 23:02:53

标签: jquery

在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”循环)

谢谢!

4 个答案:

答案 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!='')")