1

我使用.serialize()函数创建一个键 -> 值对字符串,以使用 HTML 表单更新数据库。最近我一直想从数据字符串中省略一个输入字段。我认为.not()函数应该可以工作,但它没有(就我在这里使用它的方式而言)。请参阅小提琴以获取问题示例。http://jsfiddle.net/9RbZ4/

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

我该怎么做呢?

谢谢!

4

3 回答 3

2

您的调用 $('form') 选择所有表单元素,然后调用 .not('[name="a"]') 将过滤掉所有具有属性 name="a" 的表单元素,但它们都没有这个属性。

你想要达到的是

$('form input').not('[name="a"]').serialize();

上面的代码选择表单元素内的所有输入元素,然后过滤掉具有给定名称的输入。

于 2012-05-07T10:57:11.367 回答
2

这看起来确实有点奇怪,因为您希望不过滤掉您不想要的位。

但是,您选择的是表单本身而不是输入,这就是它无法过滤的原因。

$('form *[name]').not('[name="a"]').serialize();

应该做的伎俩。

注意 - 我使用 *[name] 因为您可能涉及输入以外的元素......

于 2012-05-07T11:01:38.073 回答
1
var the_data = $('form :input[name!="a"]').serialize();

演示

于 2012-05-07T11:04:19.153 回答