请你看看,帮我意识到我在哪里出错?这是jsfiddle链接:http://jsfiddle.net/Hitman666/QcEkj/1/但这里也是代码
HTML:
<form action="#" id="gamesForm">
<p>
<input id="gName" type="text" class="medium" />
<span class="notification information">Game name</span>
</p>
<p>
<span class="notification information">Enabled:</span>
<input id="gEnabled" type="checkbox" />
</p>
<br />
<!--Additional data for extra type-->
<div id="extraAdditionalData" class="hidden">
<p>
<input id="rRacers" type="text" class="medium" />
<span class="notification information">Racers</span>
</p>
<p>
<input id="rVideoSet" type="text" class="medium" />
<span class="notification information">Video set</span>
</p>
</div>
</form>
<a href="#" id="saveConfiguration" class="graybuttonBig">Save everything!</a>
JavaScript的:
$(document).ready(function(){
$("#saveConfiguration").click(function(){
alert( $("form").serialize() );
});
});
我得到的只是一个空字符串。
答案 0 :(得分:153)
您必须提供表单元素name
s!
这与jQuery无关。每个表单元素都必须name
才能将表单提交为successful control:
成功的控制对于提交是“有效的”。每个成功的控件都将其control name与其current value配对,作为提交的form data set的一部分。必须在
FORM
元素中定义成功的控件,并且必须具有control name。
jQuery只是忽略那些没有名称的元素(或者,根据它如何获取元素,它甚至可能看不到它们,因为表单本身没有引用它们。)
答案 1 :(得分:36)
阻止serializeArray()
正确序列化的其他内容是disabled
输入。 serializeArray
没有序列化已禁用的输入,这与使用表单未提交禁用输入的方式非常相似。
成功的控制对于提交是“有效的”。
- 禁用的控件无法成功。
答案 2 :(得分:5)
答案 3 :(得分:2)
我认为问题在于您尝试选择
这样的形式$("form");
但这相当于
getElementsByTagName("form");
返回一个对象数组。
因此,您可以使用 #id 选择器,或使用索引访问表单。
希望这会有所帮助。
答案 4 :(得分:0)
首先,您需要为所有输入控件(如文本框等)赋予name属性。然后,请检查您的ID是否冲突,我的表单具有相同的ID,而问题所在的是该部分。 / p>
答案 5 :(得分:0)
您没有在javascript中正确引用表单
尝试更改为此:
$('#gamesForm').serialize();
答案 6 :(得分:0)
注意不要将一个表单放入另一个表单中。
显然 op 没有,但是如果模块和部分放置不正确,这很容易发生
答案 7 :(得分:-8)
你提到的是错的。尝试:
$("#gamesForm").serialize();