2016-07-07 14 views
0

私はPHP foreach(codeigniter内)で作成したテーブルでかなり簡単な問題があります。phpでテーブル内のチェックボックスforeach

テーブル内の1つの列に2つのチェックボックスがあります。 1つのtrueと1つのfalseなので、テーブルを作成するときにいくつかの名前と情報、2つのチェックボックスがあります。ユーザーがtrueをクリックするたびに、データベースのAJAX POST呼び出しを作成して列の状態を変更します。しかし、ユーザーがtrueをクリックしてからfalseをクリックすると、trueのチェックボックスをオフにします。ここで

は、ここでの問題は、私は、テーブルのチェックボックスの2行目はfalseを言うことができますチェックしたときに、上の変更があることがあるコード

<table class="responstable"> 
    <tr> 
    <th>ID</th> 
    <th><span>Name</span></th> 
    <th>number1</th> 
    <th>number2</th> 
    </tr> 

    <?php 
    foreach($students as $column => $data) { ?> 
    <tr>  
    <td><?php echo $data[0]->Userproperties_UserAM; ?></td> 
    <td><?php echo $data[0]->Userproperties_UserFullName; ?></td> 
    <td><?php echo $data[0]->UserAbsence; ?></td> 
    <td> <input class="true" id="<?php echo $data[0]->Userproperties_UserId; ?>" type='checkbox' value="<?php echo $data[0]->Userproperties_UserAM; ?>" /> 
    <label for='true'> 
    <span></span> 
    True  
    </label> 
    <input class="false" id="<?php echo $data[0]->Userproperties_UserId; ?>" type='checkbox' value="<?php echo $data[0]->Userproperties_UserAM; ?>" /> 
    <label for='false'> 
    <span></span> 
    False 
    </label></td> 
    </tr> 
<?php } ?> 
</table> 

とAjaxコード

$(document).ready(function() { 
    $('.true').change(function() { 
     if($(this).is(":checked")) { 
      $('.false').attr('checked', false); 
        var moduleid = <?php echo $moduleid; ?>; 
        var teacherid = <?php echo $teacherid; ?>; 
        var studentid = $(this).attr('id'); 
        var weeknum = $("#dropi").val(); 
        jQuery.ajax({ 
         type: "POST", 
         url: "<?php echo base_url(); ?>" + "index.php/TeacherParousies/send_parousia", 
         data: { 
          moduleid: moduleid, 
          studentid: studentid, 
          teacherid: teacherid, 
          parousia: 1, 
          weeknum: weeknum 
         }, 
         success: function(res) { 
         }, 
         error: function(err) { 
         } 
        }); 
       } 
      }); 
      $('.false').change(function() { 
       if($(this).is(":checked")) { 
       $('.true').attr('checked', false); 
        var moduleid = <?php echo $moduleid; ?>; 
        var teacherid = <?php echo $teacherid; ?>; 
        var studentid = $(this).attr('id'); 
        var weeknum = $("#dropi").val(); 
        jQuery.ajax({ 
         type: "POST", 
         url: "<?php echo base_url(); ?>" + "index.php/TeacherParousies/send_parousia", 
         data: { 
          moduleid: moduleid, 
          studentid: studentid, 
          teacherid: teacherid, 
          parousia: 0, 
          weeknum: weeknum 
         }, 
         success: function(res) { 
         }, 
         error: function(err) { 
         } 
        }); 
       } 
    }); 
}); 

ですチェックされている場合はtrueの1行目です。

私は

if($(this).is(":checked")) 

任意のアイデアを述べているが?

+0

ラジオボタンの使用を検討しましたか? – ymas

+0

@ymas nopなぜ私はそれが自分の行のチェックボックスのチェックを外していないのかと思っていました。私は 'class'のためにそのことを知っていますが、私の既存のコードで動作させるにはどうしたらいいですか?そして、私は上記のコードと同じ問題があると思います。 –

+0

クラス名はチェックボックスのチェックとチェックを外すために使用され、クラスは一意の識別子ではないため、他の行が変更されます。クラス名を使用する代わりに、Idを使用します。 –

答えて

3

あなたのケースでは、.falseと.trueがすべて選択を解除します。最も近い要素をチェックするだけです。

コード$( '。true')を親切に置き換えます。attr( 'checked'、false);このコードで$(this).closest( "td").find( '。true')。attr( 'checked'、false);

$( '。false')と同じです。attr( 'checked'、false);この$(this).closest( "td").find( '。false')。attr( 'checked'、false);

+0

ありがとうございました。これは魅力的に働いた:) –