序列化不适用于jQuery的表单

时间:2011-07-05 09:24:41

标签: 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() );   
    });
});  

我得到的只是一个空字符串。

8 个答案:

答案 0 :(得分:153)

您必须提供表单元素name s!

这与jQuery无关。每个表单元素都必须name才能将表单提交为successful control

  

成功的控制对于提交是“有效的”。每个成功的控件都将其control name与其current value配对,作为提交的form data set的一部分。必须在FORM元素中定义成功的控件,并且必须具有control name

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

答案 1 :(得分:36)

阻止serializeArray()正确序列化的其他内容是disabled输入。 serializeArray没有序列化已禁用的输入,这与使用表单未提交禁用输入的方式非常相似。

  

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

     
      
  • 禁用的控件无法成功。
  •   

Source

答案 2 :(得分:5)

请在输入字段中添加name

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

this fiddle我添加了name,它运行正常。

答案 3 :(得分:2)

我认为问题在于您尝试选择

这样的形式
$("form");

但这相当于

getElementsByTagName("form");

返回一个对象数组。
因此,您可以使用 #id 选择器,或使用索引访问表单。 希望这会有所帮助。

答案 4 :(得分:0)

首先,您需要为所有输入控件(如文本框等)赋予name属性。然后,请检查您的ID是否冲突,我的表单具有相同的ID,而问题所在的是该部分。 / p>

答案 5 :(得分:0)

您没有在javascript中正确引用表单

尝试更改为此:

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

答案 6 :(得分:0)

注意不要将一个表单放入另一个表单中。

显然 op 没有,但是如果模块和部分放置不正确,这很容易发生

答案 7 :(得分:-8)

你提到的是错的。尝试:

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