使用.not()和.serialize()

时间:2012-05-07 10:53:06

标签: jquery html forms serialization

我使用.serialize()功能制作密钥 - >值对字符串,用于使用HTML表单更新数据库。最近我一直想要省略数据字符串中的一个输入字段。我认为.not()函数应该可以工作,但它没有(就我在这里使用它的方式而言)。请看一下这个问题的例子。 http://jsfiddle.net/9RbZ4/

在此示例中,有四个字段,名称为a,b,c和d。我希望从序列化函数中省略name =“a”的字段。我该怎么办?请注意我希望引用元素的name属性。

我该怎么做?

谢谢!

3 个答案:

答案 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