У меня есть следующая таблица
<tbody>
<?php
foreach($redeemSales as $sale)
{
?>
<tr value='<?php echo $sale['id']; ?>'>
<td><input type="checkbox" name="salesIds[]" value="<?php echo $sale['id']; ?>" /></td>
<td><?php echo $sale["ring"];?></td>
<td><?php echo formatFullDate($sale["soldDate"]) ?></td>
<td><?php echo $sale["saleType"]; ?></td>
<td>
<div class="col-lg-8">
<select name="claimTypes[]" class="form-control redeemOptions">
<option value="None">None</option>
<option value="CD">CherieDori Credit (CD)</option>
<option value="Amex">American Express Card (Amex)</option>
</select>
</div>
</td>
</tr>
<?php }?>
</tbody>
При изменении любого значения redeemOptions необходимо установить соответствующий флажок. Теперь я не хочу, чтобы люди автоматически устанавливали флажки. Так что я отключил их, проверить, когда я изменю параметры в redeemOptions. Вот код JavaScript
$('.redeemOptions').change(function()
{
var menuChanged = $(this);
parentForm = menuChanged.closest('form');
correspondingCheckbox = parentForm.find('input[name=salesIds]');
var status = (menuChanged.val() === 'None') ? false : true;
$(this).closest('tr').children()[0].childNodes[0].checked = status;
});
У меня есть кнопка, которая получает все saleIds, связанные только с отмеченными флажками
Вот код
$('.redeemBtn').on('click', function()
{
$('input[name="salesIds[]"]').disabled = false;
var checked = $('input[name="salesIds[]"]:checked').serialize();
var cclaim = $('select[name="claimTypes[]"]').serialize();
if(checked !== '')
window.location.href = 'actions.php?j=4&' + checked + '&' + cclaim;
else
alert('No sales were selected');
});
Он работает нормально, если я уберу отключенный из флажка, в противном случае выдает «Нет выбранных продаж», однако я не хочу удалять отключенных. Я не хочу, чтобы пользователи взаимодействовали с ним. Как я могу получить значения флажков, которые отображаются как проверяемые. Что нужно сделать
Вы не можете сделать это, вам нужно включить его, чтобы увидеть / получить его на стороне сервера (в противном случае «клиент не отправит его вообще»). Браузер «не включает отключенные элементы управления» в «отправке», поскольку они «не считаются« успешными »элементами управления».
поэтому лучше назначить какое-то значение этому флажку по умолчанию во время отправки.
см. эту статью:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2
например.:enable/disable
флажок при нажатии кнопки
<html>
<head>
<title></title>
<script type="text/javascript">
function chk_control(str) {
if(str=='dsb'){document.getElementById('ck1').disabled=true;}
else {document.getElementById('ck1').disabled=false;}
}
</script>
</head>
<body >
<form name=form1 method=post action=check.php>
<table>
<tr ><td ><input type=checkbox name=ckb id=ck1 value=1></td><td >PHP</td></tr>
<tr ><td ><input type=button value='Disable' onClick="chk_control('dsb')";></td>
<td ><input type=button value='Enable' onClick="chk_control('enb')";></td></tr>
</table></form>
</body>
</html>
Это довольно распространенный случай для webdev. Вы должны добавить некоторые hidden
вход в этом случае.
<input type="hidden" name="salesIds[]" value="smth">
и оставьте свои флажки без name
в целях «презентации».
$('#id of checkbox').prop("disabled", false);
Это активирует поле. Если вам нужно получить значение отключенного поля, просто включите его после нажатия кнопки отправки. Это самый простой способ получить значения.