序列化不适用于jQuery的表单

Nik*_*ola 58 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> 
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

$(document).ready(function(){
    $("#saveConfiguration").click(function(){
        alert( $("form").serialize() );   
    });
});  
Run Code Online (Sandbox Code Playgroud)

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

Fel*_*ing 160

你必须给你的表单元素name!

这与jQuery无关.每个表单元素都必须name考虑将表单提交为成功控件:

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

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


Lia*_*iam 42

阻止serializeArray()正确序列化的其他东西是disabled输入.serializeArray没有序列化禁用的输入,这与禁用输入未与表单一起提交的方式非常相似.

成功的控制对于提交是"有效的".

  • 禁用的控件无法成功.

资源


who*_*ows 6

name在输入字段中添加一个:

<input type='text' name='give_some_name' />
Run Code Online (Sandbox Code Playgroud)

这个小提琴中,我添加了一个name,并且工作正常。