При динамическом загрузке набора полей ввода с предложением 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>
Сначала вам нужно добавить слушателя изменений событий
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' );
}
this
указатель