我有一个默认值的输入。 在某些情况下,默认值将是什么(我的意思是输入将是空的) 所以代码将是这样的:
<input type="text" class="srlz" value="" />
然后我有一个jquery函数,它应该序列化非空输入。 (以及它们的值不是-1的选择)通过以下代码:
$(":input.srlz[value!='']").not(":has(option[value='-1']:selected)").serialize();
或:
$(":input.srlz").not(":has(option[value='-1']:selected)").not("[value='']").serialize();
但是代码没有序列化提到的输入,虽然我输入了输入值,因为它有默认值(value=""
)。
我刚刚测试了以下输入而不是第一行,它运行良好。
<input type="text" class="srlz" />
我该如何解决问题?
答案 0 :(得分:1)
输入值属性与输入值属性不同。属性在DOM中设置,只能包含字符串。属性是对象的一部分,它们可以存储其他类型,如bool。
当您使用:input[value!='']
时,检查属性,但是当您编辑输入时,js会设置其属性(这就是为什么您在开发人员工具中看不到DOM检查器中的实际值)。 / p>
解决方案是创建用于检查value属性的filter()。
$(...).filter( function() {
return $(this).val() !== '';
})...