0

PHP の For 句を使用して一連の入力フィールドを動的にロードする場合、各行にチェックボックスを用意して、ユーザーがチェックした場合にその特定の行のすべての入力フィールドが無効になるようにします。

対応するチェックボックスがクリックされるたびに特定の行を無効にするように、JavaScriptを動的に適応させる必要がありますが、それを達成する方法が本当にわかりません。

これが私のコードです:

 <?php 
for ($i=0;$i<5;$i++)
     {
   ?>
   <tr>
   <td><input id="includeItem<?=$i?>" type="checkbox" onchange="includeMore" name="item<?=$i?>"></td>
   <td><input name="id<?=$i?> style="color:#888;" disabled="disabled"></td>
   <td><input id="formItems<?=$i?>" class="datepicker" name="date<?=$i?>"></td>
   <td><input id="formItems<?=$i?>" name="description<?=$i?>"></td>
   <td><input id="formItems<?=$i?>" name="amount<?=$i?>"></td>
   </tr>
<?php } ?>

次に、私のjavascriptは次のとおりです。

<script>
    function includeMore()  {
        var $check = $('#includeItem');
            if($('#includeItem').is(':checked')) 
                {
                $('#formItems').attr.('disabled','');
                }
            else {
                $('#formItems').attr.('disabled','disabled');
                }
        }

</script>   
4

1 に答える 1

1

まず、変更イベント リスナーを追加する必要があります。

var $checkboxes = $( '.class-for-the-input' );

$checkboxes.on( 'change', function ( evt ) {
    //... code
});

関数ハンドラー内で、親行を取得し、クリックされたチェックボックスと等しくないすべての入力要素を見つけ、チェックボックスの状態に基づいて無効にする必要があります。

var $this = $( this ), isChecked = this.checked,
    $els = $this.parents( 'tr' ).find( ':input' ).not( $this );

if ( isChecked ) {
    $els.prop( 'disabled', 'disabled' );
} else {
    $els.removeProp( 'disabled' );
}
于 2013-10-24T17:06:04.303 に答える