2

チェックボックスの値を取得するためにjqueryを使用しています。ただし、値が複製され、while ループ内のすべてのチェックボックスの値を取得しているように見えます。誰かが私の間違いを指摘してくれたら幸いです。ありがとうございました。

更新: 現在のコード。最初のエントリのみを選択するようになりました。さらにチェックボックスをクリックしても出力はありません。

PHP コード

while($row = mysql_fetch_array($result)) 
{
    $ticket = $row['ticket_frm'];
    $rowdate = date("d/m/Y",strtotime($row['date_frm']));
    $id = $row['id_frm'];
    $from = $row['from_frm'];
    $subject = $row['subject_frm'];
    $message = $row['message_frm'];

    $myString = <<<EOF
    <span><input id="check" type="checkbox" name="delete" value="<?php echo $ticket ?>"></span>
    <div class='msgTrue buttonMailTrue' data-message='%s' data-subject='%s' data-rowdate='%s' data-from='%s'>

    <img src="images/sml_new_mail_icon.gif" class="mailIcon" alt="" />$subject;
    <div class="rowdate">$rowdate</div><br />
    <span class="mailFrom">$from</span>
    </div>
    <p class="checked"></p>
    <!-- The following end tag need to be at the start of the line -->
    EOF;
    printf($myString, $message, $subject, $rowdate, $from);
}   echo '<p class="checked">'.'</p>';

jQuery コード

$(function() {
    $("#check").click(function() {
       var isChecked = $(this).prop("checked");  // or $(this).prop("checked")
         if (isChecked) {
           $("p.checked").html("Checkbox is checked: <b>True</b>");
       } else {
           $("p.checked").html("Checkbox is checked: <b>False</b>");
}

}); });

4

4 に答える 4

2

コードとセレクターによると、ページには多くのinput class="check"要素があります。
クラス名でそれらを見つけるため、重複しています。

id-attribute と$("#id")構文を使用して正しい値を取得するか、コードでキーワードを使用しthisます。

//var isChecked = $('.check').is(':checked'); - wrong
var isChecked = $(this).is(':checked'); // right

更新:要素に
固有のものを提供しませんでした。id当然、これは機能しません。あなたのエラーは以前と同じです。
このコードを試してください:

<input id="check$ticket" type="checkbox" name="delete" value="<?php echo $ticket ?>">

JavaScript の場合も同じ - 一意である要素を見つける必要がありますid

  $("#check" + TICKET_NUMBER_HERE).click(function() {
   var isChecked = $(this).prop("checked");  // or $(this).prop("checked")
     if (isChecked) {
       $("p.checked").html("Checkbox is checked: <b>True</b>");
   } else {
       $("p.checked").html("Checkbox is checked: <b>False</b>");
于 2012-11-20T10:38:33.003 に答える
1

現在のチェックボックスで作業するために使用する必要がありthisます。

$(".check").click(function() {
    var isChecked = this.checked;  // or $(this).prop("checked")
    if (isChecked) {
        $("p.checked").html("Checkbox is checked: <b>True</b>");
    } else {
        $("p.checked").html("Checkbox is checked: <b>False</b>");
    }
});
于 2012-11-20T10:36:32.587 に答える
1

jquery コードを次のように変更します。$('.check') はオブジェクトの配列を返すため、デフォルトでは最初のオブジェクトのみのプロパティをチェックします

$(function() {
  $('.check').click(function(){
    var isChecked = $(this).is(':checked');
    alert(isChecked);
    if(isChecked)
      $('p.checked').html('Checkbox is checked: <b>True</b>');
    else
      $('p.checked').html('Checkbox is checked: <b>False</b>');
  });
});
于 2012-11-20T10:38:09.147 に答える
1

試す

$(".check").click( function() { 
    $("p.checked").html( 
        "Checkbox is checked: <b>" + $(this).is(":checked") + "</b>" );
}
于 2012-11-20T10:45:15.367 に答える