如何使用.serialize()排除类的输入

时间:2018-03-16 15:55:28

标签: javascript jquery

我使用jquery序列化表单,但我想用类.has-dynamic-prices排除所有输入。

我正在使用下面的代码,但它似乎并没有起作用。任何帮助将非常感激!谢谢!

   var serialized_form =  $("#base-menu-form:input:not(.has-dynamic-prices)").serialize()

3 个答案:

答案 0 :(得分:1)

考虑 - #base-menu-form是表单ID

尝试:

var serialized_form =  $('#base-menu-form input:not(.has-dynamic-prices)').serialize();

var serialized_form =  $('#base-menu-form input').not('.has-dynamic-prices').serialize();

答案 1 :(得分:1)

The other answer from weBBer works well

$("form input").not('.has-dynamic-prices').serialize()

或者在序列化之前禁用字段

$("form .has-dynamic-prices").prop("disabled",true); // works
console.log($("form").serialize())
.hidden { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<form>
<input type="hidden" name="f1" value="1"/>
<input type="text" name="f2" value="2" class="has-dynamic-prices" />
<input class="hidden"  name="f3" value="3"/>
<input type="text" disabled name="f4" value="4" /><br />
<textarea name="f5" class="has-dynamic-prices" rows="5" >Also ignore me although I am not an <input></textarea>
</form>

答案 2 :(得分:0)

如果要获取表单的所有元素,可以使用表单的纯Javascript elements属性,然后根据该属性过滤输入。

$($("myForm")[0].elements).not(".has-dynamic-prices").serialize()