从表元素序列化而不是整个表单

尝试仅序列化特定表中的元素,但如果我执行整个Form ,它只返回结果

在下面的代码中,我想ajax只是tbl2中的元素

 

代码

 var params = $("#tbl2").serialize(); var resp = $.ajax({ async: false, type: "POST", url: AppRoot + "webhandlers/postback.ashx", data: params }); 

首先,

不能有name属性,即使可以, jQuery ID选择器 ( # )也不匹配。

如果您使用id

),它将如下工作:

 var params = $("#tbl2 :input").serialize(); 

:input选择器选择所有表单元素(这里,在#tbl2 ),这是必需的,因为serialize()只适用于那些。

还请查看我的jsFiddle演示 。

您无法serialize表 – 该方法不适用于那种DOM对象,只能对表单和表单字段进行序列化。

如果你真的想做你提出的建议,你需要正确的选择器来选择tbl2的子元素,它们也是表单元素,然后你必须手动序列化每一个。 有人在另一个问题上做了这个:在没有表格的情况下序列化?

更好的方法可能是禁用所有不在您感兴趣的表中的表单元素 – 您需要一个选择器来选择不是tbl2子元素的所有表单元素 – 然后序列化表单。 禁用的元素将被省略。

您可以使用serializeArray方法,该方法将为您提供输入字段数组,并可与数据一起使用。

 var params = $("#tbl2 input").serializeArray();