2017-04-06 3 views
0

私は、同じ名前とIDを持つ異なる値のチェックボックスを持っています。 ajaxリクエストに渡すためにチェックボックスをクリックしたときに値を取得しようとしています。今まで私は、あなたが上で数回同じIDを使用していないはずjqueryの値がチェックボックスのループ内に投稿されていません

function checkCheckboxState() { 

    if ($('.displayme').is(':checked')) { 

    //tried all of these... 

    //var id = $('.displayme').first().attr("value"); 
    //var id = $('.displayme').val(); 
    //var id = $(this).val(); 
     alert(id); 

    } 

     var id = $(":checkbox[name='displayme']:checked").val(); 
} 
<input type="checkbox" name="displayme" value="27" id="displayme" class="displayme" onclick="checkCheckboxState()"> 
<input type="checkbox" name="displayme" value="28" id="displayme" class="displayme" onclick="checkCheckboxState()"> 
<input type="checkbox" name="displayme" value="29" id="displayme" class="displayme" onclick="checkCheckboxState()"> 
+1

「私は同じ... idでチェックボックスを持っています」それは問題です自己。 'id'属性は一意である必要があります。また、フォームを送信するときに選択されたチェックボックスの値の配列を作成すると、ロジックがより合理的になります –

+0

複数の同じIDを使用することはお勧めしません – npst

+0

同じIDが正しくありませんIDea ^^ - >これは、 (id);})。get(); var id = $( "入力:チェックボックス:チェック済み")。 – OldPadawan

答えて

0

(これはPHPのループに実際にある)それが唯一のリストの最初の値を返し、私は同じ結果を得るてみてください同じページ。

あなたは、チェックボックスの変化にイベントをバインドし、これで値を取得できます。

$("checkbox.displayme").on("change",function(){ 
    var checker = $(this).is(':checked'); 
    //your ajax code here 
}); 

そして、あなたのチェックボックスがPHPのループ上で生成されている場合、あなたは、ループのインデックスを使用することができます異なるIDを生成します(ただし、上記のコードではIDは必要ありません)。

+0

'$(this).val($(this).is( ':checked'))'? –

+0

ありがとう!それは間違いでした。 –

0

最初の問題は、同じidの複数の要素があることです。彼らはユニークである必要があります。この場合、要素を識別するための共通のクラス名があるので、それらを削除することもできます。

実際の問題を解決するには、イベントハンドラ内のクリックされたチェックボックスへの参照を取得する必要があります。すでにjQueryを使用しているので、changeイベントハンドラを使用してjQueryを実行できます。またあなたは、単一のAJAXリクエストで渡すことができ、選択したすべてのチェックボックスの配列を構築するためにmap()を使用することができます

$(function() { 
 
    $('.displayme').change(function() { 
 
    if (this.checked) 
 
     console.log(this.value); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="displayme" value="27" class="displayme"> 
 
<input type="checkbox" name="displayme" value="28" class="displayme"> 
 
<input type="checkbox" name="displayme" value="29" class="displayme">

$(function() { 
 
    $('.displayme').change(function() { 
 
    var values = $('.displayme:checked').map(function() { 
 
     return this.value; 
 
    }).get() 
 
    console.log(values); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" name="displayme" value="27" class="displayme"> 
 
<input type="checkbox" name="displayme" value="28" class="displayme"> 
 
<input type="checkbox" name="displayme" value="29" class="displayme">
これを試してみてください

関連する問題