我使用.serialize()函数创建一个键 -> 值对字符串,以使用 HTML 表单更新数据库。最近我一直想从数据字符串中省略一个输入字段。我认为.not()函数应该可以工作,但它没有(就我在这里使用它的方式而言)。请参阅小提琴以获取问题示例。http://jsfiddle.net/9RbZ4/
在此示例中,有四个字段,名称分别为 a、b、c 和 d。我希望从序列化函数中省略 name="a" 的字段。我该怎么做?请注意我希望引用元素的名称属性。
我该怎么做呢?
谢谢!
我使用.serialize()函数创建一个键 -> 值对字符串,以使用 HTML 表单更新数据库。最近我一直想从数据字符串中省略一个输入字段。我认为.not()函数应该可以工作,但它没有(就我在这里使用它的方式而言)。请参阅小提琴以获取问题示例。http://jsfiddle.net/9RbZ4/
在此示例中,有四个字段,名称分别为 a、b、c 和 d。我希望从序列化函数中省略 name="a" 的字段。我该怎么做?请注意我希望引用元素的名称属性。
我该怎么做呢?
谢谢!
您的调用 $('form') 选择所有表单元素,然后调用 .not('[name="a"]') 将过滤掉所有具有属性 name="a" 的表单元素,但它们都没有这个属性。
你想要达到的是
$('form input').not('[name="a"]').serialize();
上面的代码选择表单元素内的所有输入元素,然后过滤掉具有给定名称的输入。
这看起来确实有点奇怪,因为您希望不过滤掉您不想要的位。
但是,您选择的是表单本身而不是输入,这就是它无法过滤的原因。
$('form *[name]').not('[name="a"]').serialize();
应该做的伎俩。
注意 - 我使用 *[name] 因为您可能涉及输入以外的元素......
var the_data = $('form :input[name!="a"]').serialize();