我使用.serialize()功能制作密钥 - >值对字符串,用于使用HTML表单更新数据库。最近我一直想要省略数据字符串中的一个输入字段。我认为.not()函数应该可以工作,但它没有(就我在这里使用它的方式而言)。请看一下这个问题的例子。 http://jsfiddle.net/9RbZ4/
在此示例中,有四个字段,名称为a,b,c和d。我希望从序列化函数中省略name =“a”的字段。我该怎么办?请注意我希望引用元素的name属性。
我该怎么做?
谢谢!
答案 0 :(得分:2)
您的调用$('form')选择所有表单元素,然后调用.not('[name =“a”]')将过滤掉所有具有属性name =“a”的表单元素,但没有他们有这个属性。
您想要实现的是
$('form input').not('[name="a"]').serialize();
上面的代码是选择表单元素中的所有输入元素,然后过滤掉具有给定名称的输入。
答案 1 :(得分:2)
这看起来有点奇怪,因为你不希望过滤掉你不想要的位。
但是你选择表单本身而不是输入,这就是它无法过滤的原因。
$('form *[name]').not('[name="a"]').serialize();
应该这样做。
注意 - 我使用* [name],因为你可能有输入所涉及的元素......
答案 2 :(得分:1)
var the_data = $('form :input[name!="a"]').serialize();
<强> DEMO 强>