0

我有一个包含多个输入元素的表单,需要序列化 ​​- 转换为 HTTP 查询字符串。这很好用。然后我想去掉一个输入值,所以我用 find 选择所有不等于那个的元素;效果很好。但是后来我尝试通过将两个发现链接在一起来删除两个输入,但它失败了。

我知道禁用不需要的输入或删除 name 属性也可以,但这些选项在我的应用程序中并不明智。

我有一个 jsfiddle 来演示:http: //jsfiddle.net/dr_glenn/H8ZwL/

让我在这里总结一下。有这样一个表格:

<form>
<input type="text" name='aa' value='aa'>
<input type="text" name='bb' value='bb'>
<input type="text" name='cc' value='cc'>
</form>

像这样的jquery代码:

query_args = $('#form').serialize();
alert( query_args );  // looks OK
query_args = $('#form').find('[name!="bb"]').serialize();
alert( query_args );  // Very good, 'bb' is gone
query_args = $('#form').find('[name!="bb"]').find('[name!="cc"]').serialize();
alert( query_args );  // FAIL! Nothing is displayed.

如果我刚刚犯了一些愚蠢的菜鸟错误,请试着表现得很好!

4

2 回答 2

1

它应该是 form_args = $("#actions").find("[name!='cc'][name!='ee']").serialize();

找到元素属性 name!=cc AND name!=dd

于 2013-06-22T03:14:06.347 回答
1

您的选择器不正确试试这个:

form_args = $("#actions").find("[name!='cc'],[name!='ee']").serialize();

小提琴

您需要在属性选择ccee#actions使用逗号将它们分隔开来。

为什么您的代码无法正常工作是因为您试图找到正确bb的,#actions但随后您试图找到不是cc. 所以你什么也得不到。在您尝试查找的选择器中使用逗号分隔符以及哪些是bbbbccbb#actions

于 2013-06-22T03:01:00.077 回答