2016-05-10 11 views
0

私はチェックボックスの束を持つHTMLフォームを持っています。各チェックボックスは、このように説明されています

echo "<td>" 
    echo "<input type = \"checkbox\" name=\"name\" value=\"$name\">"; 
    echo "<input type = \"hidden\" name=\"user\" value=\"$user\">"; 
echo "</td>" 

は、その後、私は送信ボタンを持っているいくつかのJavaScriptを実行しますクリックしたとき:

echo "<input type=\"button\" name =\"send\" value=\"Submit\" onclick=\"get_checked(form)\">"; 

今私のjavascript:

function get_checked(form){ 
    $("input[type='checkbox']").change(function() {   
     if($(this).is(':checked')){ 
      $(this).find("input[name]").each(function(index, node){ 
       formData[node.name] = node.value; 
       alert (node.name + node.value); 
      }); 
     } 
    }); 
} 

私が見つけたいですすべてのチェックボックスをオンにして、チェックボックスの各名前と値のペアを表示します。

$(':checkbox:checked').each(function(i){ 
    testname_checked[i] = $(this).val(); 
    alert(testname_checked[i]); 
}); 

任意のアイデア:私は.each使用する場合は、この作品不適切ので、しかし、それは何として機能していないが警告されますと、私は$(this)を使用するかもしれないと思いますか?

+3

$(これ).find ...は、チェックボックスの子孫である要素を探します(私は疑いがあります)。 – James

+1

フォームを送信すると、イベントハンドラが接続されており、フォーム送信をキャンセルしません。チェックボックスの子は何ですか? – epascarello

+0

クリックハンドラでは、変更ハンドラをアタッチしているようです。それは正しいことではありません。変更ハンドラを添付するだけで済みます。 –

答えて

0

チェックボックスにクリックハンドラを追加するだけです。

$(":checkbox").click(function() { 
    $(this).next("input[type=hidden]").val(this.checked ? this.value : ''); 
}); 
0

私はあなたが達成しようとしているものを全くわからないんだけど、私はあなたの意図が何であるかの私の解釈でこのjsfiddleを作成しました。

これはコード

$('#btn').click(function (e){ 
     var formData = {}; 
    $("input[type='checkbox']").each(function() { 
     if($(this).is(':checked')){ 
       formData[$(this).attr('name')] = $(this).val(); 
     } 
    }); 
    console.log(formData); 
}); 

である私は、JSでのクリックイベントを取り付けたが、そのビットは問題ではありません。私はこれがあなたの意図だとは思わなかったので、私はonChangeイベントのものを削除しました。あなたのやり方でそれを混在させるのは実際には意味がありませんでした。そして、私はそれが目でより簡単に見つけるように警報の代わりにコンソールログを使用したが、そうでなければできるだけ変更されていなかった。

関連する問題