我试图按名称排除输入(它是隐藏的输入,包含我的随机数)
以下问题几乎就是我要找的:
How do I use jQuery's form.serialize but exclude empty fields
但我有2个关于那里的解决方案的问题 - 其中说明了序列化表单数据,除了空输入和输入,其中值=“。”
$("#myForm :input[value][value!='.']").serialize();
首先,我无法使用jquery变量“this”
$('#ofform').live('submit', function(e) {
e.preventDefault();
var serializedReturn = $(this :input[name!='security']).serialize();
});
其次,我有一个单独的形式,其id为ofform-reset,如果我使用的话:
var serializedReturn = $(#ofform :input[name!='security']).serialize();
它接收其他#ofform-reset形式的输入,AND / OR输入未包含在标记内。
在我以前的一个问题中找到答案。样式的无效标记:
<form id="ofform">
<div id="toolbar">
<button id="save">Save</button>
</form>
<form id="ofform-reset">
<button id="reset">Reset</button>
</form>
</div>
现在要弄清楚如何使用2个不同的按钮来控制同一个表格
答案 0 :(得分:42)
您不需要:
,因为input是一个元素而不是伪选择器。其次,您不能在选择器中使用对象和文本字符串。您需要将此作为范围参数提供给$()
:
$('#ofform').live('submit', function(e) {
e.preventDefault();
var serializedReturn = $('input[name!=security]', this).serialize();
});
答案 1 :(得分:12)
首先,您需要调用.find()
方法,如:
var serializedReturn = $(this).find('input[name!=security]').serialize();
否则完整的字符串将进入css查询引擎(Sizzle)。
其次:
我有另一个id为的表单 ofform-reset如果我使用:
你需要改变它。拥有多个ID的无效标记。如果我在这里理解你错了,第一个解决方案也可以帮助你,调用.find()
方法:
var serializedReturn = $('#ofform').find('input[name!=security]').serialize();
答案 2 :(得分:7)
在我的情况下,这很好用:
$("fieldset").not(".tasks-container").serialize()
答案 3 :(得分:4)
我对'input[name!=security]'
不满意,因为它排除了所有其他输入类型,例如select
,..您可以手动添加它们,但此列表会随着新的HTML标记不断增加。因此,随着每个新标记的到来,您的代码将再次被破坏。
这是我的解决方案:
$form.find(':not(input[name=draft])').serialize()
或
$('form[name=expenses] :not(input[name=draft])').serialize()
在第二个例子中,空间非常重要。
答案 4 :(得分:1)
解决了!您应该使用给定的解决方案排除要序列化的输入字段。 经过测试,解决了我的问题。
var formdata = $($("#myform")[0].elements).not("#field_id").serialize();
对于多个字段,您可以使用类名将其排除。
var formdata = $($("#myform")[0].elements).not(".class_name").serialize();
答案 5 :(得分:0)
您可以过滤结果数组
var ignoreFields = ["_csrf"];
$('form')
.serializeArray()
.filter(function(val){
return ignoreFields.indexOf(val.name) === -1;
});
或更短的变体
$('form').serializeArray().filter(val => ignoreFields.indexOf(val.name) === -1)