为什么此序列化不返回CHECKED复选框

时间:2012-09-27 18:32:00

标签: javascript jquery

我有一个带有选中复选框的表单。它的序列化没有返回那些选中的复选框。这是我用来执行序列化的jQuery代码。

$('form.subscribe').serialize()

上面的序列化返回

email= 

这是标记:

<form class="subscribe">
<div class="body">
    <div class="email input">
        <input name="email" placeholder="your email address" />
    </div>
    <div class="expandable">
        <div class="fieldLabel emphasis">I am a:</div>
        <div class="checkbox">
            <input id="isDeveloper" type="checkbox" />
            <label for="isDeveloper">Developler<label> 
        </div>
        <div class="checkbox">
            <input id="isDesigner" type="checkbox" />
            <label for="isDesigner">Designer</label>
        </div>
        <div class="checkbox">
            <input id="isHR" type="checkbox" />
            <label for="isHR">Talent Coordinator</label>
        </div>
        <div class="checkbox">
            <input id="isPM" type="checkbox" />
            <label for="isPM">Project Manager</label>
        </div>
        <div class="fieldLabel emphasis">Email me about:</div>
        <div class="checkbox">
            <input id="wantsCollab" type="checkbox" checked="checked"/>
            <label for="wantsCollab">Collaboration</label>
        </div>
        <div class="checkbox">
            <input id="wantsBlog" type="checkbox" checked="checked" />
            <label for "wantsBlog">Blog Posts</label>
        </div>
    </div>
    <div class="button">
        <input class="emphasis" type="submit" value="subscribe">
    </div>
</div>
</form>

如您所见,有1个文本输入和6个复选框。其中2个复选框已选中,但序列化中仅返回文本输入。

2 个答案:

答案 0 :(得分:4)

您的复选框没有名称属性,并且您的电子邮件输入未指定类型。此外,您的表单没有指定任何操作或编码,您可能希望将其用于优雅降级。

答案 1 :(得分:2)

来自jQuery docs

  

注意:只有“成功控件”被序列化为字符串。没有   由于表单未提交,因此提交按钮值已序列化   使用按钮。对于要包含在表单元素中的值   序列化字符串,元素必须具有名称属性。值   来自复选框和单选按钮(输入类型为“radio”或   “复选框”)仅在选中时才包括在内。来自文件的数据   选择元素未序列化。