2011-09-09 19 views
2

Jqueryの.serializeArray()メソッドを実装して、フォームをJSON文字列に変換してリクエストで送信します。これは、チェックボックスとラジオボタンを除いて私のフォームに最適です。これが正常に動作する唯一の時間は、チェックされたときです。時々、私は彼らがチェックされていないかどうかを知る必要があります。彼らはまだシリアル化する必要があります。Jquery - SerializeArray()チェックボックスがチェックされていない

手動でフォームをループして値を取得してJSONオブジェクトを作成することができますが、これは最適ではないと思います。

ここにあるJqueryの文書によると、Jquery Docs成功管理のためのW3標準に適合するものはfound hereに含めるべきです。残念ながら、これにはチェックされていないチェックボックスは含まれません。誰もがこの動作のための回避策を持っていますか?事前のおかげで...


除外にチェックされていないチェックボックスとシリアル化されたフォームを吐き出す
var form = document.getElementById('f'); 
console.log($(form).serializeArray(); 

...

+0

類似しています:http://stackoverflow.com/questions/3029870/jquery-serialize-does-not-register-checkboxes – CAbbott

+0

コードがありますか? 132456 – Incognito

+0

Lol、そうですが、あまり面白くないです。あなたが知る必要があるすべてがそこにあります。私はそれを更新します... – gabaum10

答えて

0

申し訳ありませんが、私は回避策を開発しました。

基本的に、元のJSONオブジェクトとシリアライズされたフォームを比較する関数を作成しました。ループしていくうちに、コンポーネントを比較しました。不一致があった場合は、フォームからコンポーネントを取り出し、手動でJSONに挿入しました。私は、不足しているコンポーネントを追加するためにarray.splice()メソッドを使用しました。欠落しているすべての入力を処理しました。これを試みるについて、私は同様の問題があったか

3

あなたが本当にチェックボックスやラジオボタンを使用したい場合は、それらを持っています入力フィールドは対応する非表示フィールドを更新します。そうすれば、隠された入力が常に送られます。

2

、私は はフォーム「CBX」に メイクデータを各チェックボックスに余分なクラスを追加し、未チェックのチェックボックスが同様に値を持つ必要があり、ここの周りの迅速な作業があると思いましたシリアライズ

有するフォームから配列「CBX」 のクラスとすべてのチェックボックスを介して、ループと配列が(serializeArray())で作成された後、0の値を持つ配列に追加

データを投稿するとチェックされていないChecboxと値0が表示され、投稿と一緒に転送されます。

var data = $('#form').serializeArray(); 

    $(".cbx:not(:checked)").each(function() { 
     data.push({name: this.name, value: '0' }); 
    }); 

    $.post("testpage.asp", data); 
2

代わりにjQueryプラグインを使用することもできます。例えば、serializeJSONは、このような未チェックのチェックボックスの値を設定するためのオプションがあります。いずれにせよ

$('form').serializeJSON({checkboxUncheckedValue: "false"}); 

、それは未チェックの値の隠された入力を使用するのが最善です。

関連する問題