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属性が必要です。チェックボックスとラジオボタン(「radio」または「checkbox」タイプの入力)の値は、チェックされている場合にのみ含まれます。ファイル選択要素からのデータはシリアル化されません。

于 2012-09-27T18:38:18.697 に答える