0

更新:わかりました、撃たれる必要があります。投稿の長さを短くするために、フォームコードを少し省略しました。完全なコードは次のとおりです。

<form name="userupdate" id="userupdate" method="post">
<input type='hidden' name='username' id='username' value='andyd273' />
<input type='hidden' name='setusertype' id='setusertype' value='1' />
<table align="left" border="1" cellspacing="0" cellpadding="3" class="bodytext">
<tr><td>andyd273</td></tr>
<tr><td>
<input type='checkbox' name='DealerType[]' id='GM' value='1' /> GM<br>
<input type='checkbox' name='DealerType[]' id='Chrysler' value='2' /> Chrysler<br>
<input type='checkbox' name='DealerType[]' id='Ford' value='3' /> Ford<br>
</td></tr>
</table><br>
<input type='button' value='Save' onclick='javascript: formSubmit();' />
</form>

何か試してみようと思ったので、テーブルの内容を削除して、プレーンフォームの入力をそのままにしておくと、チェックボックスがChromeの場合と同じように機能し始めました。

それで、新しい質問:入力がテーブル内にあるときにIEで作業をシリアル化しないのはなぜですか?最初の不完全な質問を解決するのを手伝ってくれたすべての人に感謝します!

完全を期すために残された古い質問:

シリアル化するフォームを取得しようとしています。ChromeとFirefoxで動作しますが、InternetExplorerでは動作しません。
例:

<input type='hidden' name='username' id='username' value='andyd273'>
<input type='hidden' name='setusertype' id='setusertype' value='1'>
<input type='checkbox' name='DealerType[]' id='GM' value='1' /> GM<br>
<input type='checkbox' name='DealerType[]' id='Chrysler' value='2' /> Chrysler<br>
<input type='checkbox' name='DealerType[]' id='Ford' value='3' /> Ford<br>

Chromeでは次のようになります。

Array
(
    [username] => andyd273
    [setusertype] => 1
    [DealerType] => Array
        (
            [0] => 1
            [1] => 3
        )

)

しかし、IEでは次のことしか得られません。

Array
(
    [username] => andyd273
    [setusertype] => 1
)

そのため、IEで機能させるために何をする必要があるのか​​わかりません。

/古い質問

4

2 に答える 2

1

アップデート:

テーブル要素に入力要素をネストすることは、正当なHTML構文ではないためです。ただし、ChromeとFirefoxはこの「問題」をスムーズに解決します。特に、Safariは必ずしもそうとは限りません。

コメントに答えるには-順序がフォーム>テーブル>など>入力が正しくない場合、テーブル>テーブルのもの>フォーム>入力で問題ありません。

フォーマットを行う「正しい」方法は、基本的にdivsまたはfieldsets、次にstyle属性です。さまざまなdisplayオプションがおそらくあなたが望むものになるでしょう(inlineそしてinline-blockおそらく最も有用tableですが、サポートする必要のあるIEのバージョンに応じてさまざまな派生物があります)-ここを読んで、自由に使えるものを理解してください。と幅。

年:

チェックボックスインターフェイスを複数選択インターフェイスに置き換えることはできますか?これは、...面倒な...IEの実装を回避する1つの方法かもしれません。あれは:

<select multiple name="DealerType">
<option value="1">GM</option>
//...etc
</select>

また、サンプルから、非表示の要素は閉じられていません(/>の代わりにで終了しています>)。扱っているIEによっては、それが問題の一部である可能性があります。

もう1つの明確なコメント:どのバージョンのjQを使用していますか?

于 2012-12-11T15:50:53.227 に答える
1

jQueryのシリアル化には、チェックされていないチェックボックスは含まれていません。

このフィドルをチェックしてください:

http://jsfiddle.net/UGaEp/3/

次の質問から詳細を見つけることができます:

jQueryのシリアル化はチェックボックスを登録しません

コードを無視して、回答を投稿させないでください。

$('#test').on('click', '#submit', validate);

function validate() {
    var data = $('#test').serialize();
    console.log(data);
}​
于 2012-12-11T16:04:08.783 に答える