感谢大家的回复。 找到解决方案:我使用了DIV而不是FORM并将其中的每个INPUT序列化。
当前的FIDDLE代码: http://jsfiddle.net/MyBZC/
表格:
<form id="sfn" name="sfn">
<input name="datasource" type="hidden" value="TDA">
<input name="staticfields" type="hidden" value="">
<input name="returnfield" type="hidden" value="Complaintinformation_ID">
<input name="returnid" type="hidden" value="Complaintinformation_ID">
eCI ID:<input class="nostyle" type="text" name="id" id="Complaintinformation_ID" style="width:150px;"/>
Complaint number: <input class="nostyle" type="text" name="ecin" id="ecin" style="width:150px;"/>
</form>
JQuery:
var ds= $("#sfn").serializeArray();
alert(ds);
警告ds给了我一个空的警告框。是不是serializeArray()不起作用,因为这个html表单实际上在另一个表单标签内?
未经编辑的真实(更长)html输出是这样的:
<form id="searchform_srcSupplier" name="searchform_srcSupplier">
<input name="datasource" type="hidden" value="DEACSQL10_BPCS_DATA">
<input name="from" type="hidden" value="BPCS_AVM">
<input name="where" type="hidden" value="Partner_ID='122'">
<input name="componentname" type="hidden" value="srcSupplier">
<input name="staticstrings" type="hidden" value="Supplier address">
<input name="staticfields" type="hidden" value="LTRIM(RTRIM(VNDAD1))+'<br>'+LTRIM(RTRIM(VNDAD2))+'<br>'+LTRIM(RTRIM(VCITY))+'<br>'+LTRIM(RTRIM(VPOST))+' '+LTRIM(RTRIM(VSTATE))">
<input class="nostyle" name="returnfield" type="hidden" value="VNDNAM">
<input class="nostyle" name="returnid" type="hidden" value="VENDOR_id">
<table ><tr>
<td>
Supplier ID:
</td>
<td>
<input class="nostyle" type="text" name="VENDOR" id="VENDOR" style="width:150px;"/>
</td>
<td>
Supplier name:
</td>
<td>
<input class="nostyle" type="text" name="VNDNAM" id="VNDNAM" style="width:150px;"/>
</td>
</tr><tr>
</tr>
</table>
</form>
(我已经尝试从表单中删除表格)
当前的FIDDLE代码: http://jsfiddle.net/MyBZC/
答案 0 :(得分:2)
试试这个:工作演示 http://jsfiddle.net/tFSdq/ 或 http://jsfiddle.net/bnTLR/
您需要序列化容器内的输入。不是容器本身
希望这符合需要:)
P.S。不要忘记点击click me man
按钮,使用serialize
和.serializeArray
在第二个演示中获取提醒。
<强>码强>
var ds= $("#sfn input").serializeArray();
alert(ds);
进一步查看下面的3张图片,其中显示了这两个警报在输入的值上显示的内容。
图片2
图片3
答案 1 :(得分:1)
像这样添加#id
var ds= $("#sfn").serializeArray();
alert(ds);
serializeArray()
和serialize()
两者都在为我工作,请查看myfiddle
答案 2 :(得分:1)
就像您已经想到的那样,serializeArray()
不适用于嵌套表单,因为它是非法 HTML,如jQuery docs中所述:
请注意, serializeArray()仅适用于表单元素,使用此方法 另一个元素的方法不起作用。此外,这种方法不会 在嵌套表单上给出任何结果,这在HTML中是非法的。
您可能需要按照jhonraymos的说明使用serialize()
或使用Tas_innit的方法。
答案 3 :(得分:0)
看看这个: http://docs.jquery.com/Ajax/serializeArray
这里写的是......“这个方法不会在嵌套表单上给出任何结果,这在HTML中是非法的”