JQuery属性(空)值选择器,无法正常工作

时间:2014-02-25 17:36:02

标签: javascript jquery html jquery-selectors html-form

元素&代码。

HTML

<input value="" name="data[Filter][address]" type="text" />
<input value="" name="data[Filter][client]" type="text" />
<input value="" name="data[Filter][tenant]" type="text" />
<input value="" name="data[Filter][contract_end_date]" type="text" />

的Javascript

console.log($("[name*='data\\[Filter\\]'][value!='']").serialize());

问题:即使它们都是空的,也会被序列化 为什么呢?

2 个答案:

答案 0 :(得分:2)

您正在查看value属性。您可以过滤掉value属性:

http://jsfiddle.net/Y2P6w/

var $filledElems = $("[name*='data\\[Filter\\]']").filter(function () {
    return $.trim(this.value).length;
});

答案 1 :(得分:1)

关键是当输入标记插入页面时,无论是在页面加载中还是在动态JavaScript代码中,如果它具有value属性,您的选择器查询将使用它或者如果您更改输入的值在JavaScript中使用setAttribute或在jQuery中使用.attr(),其值属性实际上会发生变化,但如果您在JavaScript中使用.value或在jQuery中使用.val()更改它,或者只是更改值在页面中作为文本框,属性不会改变,所以最好不要在选择器中使用值属性,因为它们不可靠,而是使用$("[name*='data\\[Filter\\]']")并按@JasonP指出的那样过滤它。 / p>

相关问题