序列化表单不能在jQuery中工作

你可以请看看,并帮助我意识到我在哪里出错了? 这里是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() ); }); }); 

我所得到的是一个空string。

你必须给你的表单元素name

这是独立于jQuery的。 每个表单元素必须有一个name才能被视为成功控制的表单提交:

成功的控制是“有效”的提交。 每个成功的控件都将其控件名称与其当前值配对,作为提交的表单数据集的一部分 。 必须在FORM元素中定义一个成功的控件,并且必须有一个控件名称 。

jQuery只是忽略那些没有名称的元素(或者,取决于如何获取元素,甚至可能不会看到它们,因为表单本身没有引用它们)。

其他一些阻止serializeArray()正确serializeArray()东西是disabledinput。 serializeArray不会连续禁用input,与禁用的input不以表单提交的方式大致相同。

成功的控制是“有效”的提交。

  • 禁用的控件不能成功。

资源

我认为问题在于你正在尝试select表单

 $("form"); 

但这相当于

 getElementsByTagName("form"); 

这将返回一个对象数组。
所以,可以使用#idselect器,或使用索引来访问表单。 希望这可以帮助。

请为您的input字段添加一个name

 <input type='text' name='give_some_name' /> 

在这个小提琴我已经添加了一个name ,它工作正常。

而你的参考是错误的。 尝试:

 $("#gamesForm").serialize();