1

我有一个带有选中复选框的表单。它的序列化不会返回那些选中的复选框。这是我用来执行序列化的 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 个复选框,但序列化中仅返回文本输入。

4

2 回答 2

4

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

于 2012-09-27T18:37:20.440 回答
2

来自jQuery 文档

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

于 2012-09-27T18:38:18.697 回答