Включение флажков в javascript и получение их значений, если они отключены

У меня есть следующая таблица

<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');
});

Он работает нормально, если я уберу отключенный из флажка, в противном случае выдает «Нет выбранных продаж», однако я не хочу удалять отключенных. Я не хочу, чтобы пользователи взаимодействовали с ним. Как я могу получить значения флажков, которые отображаются как проверяемые. Что нужно сделать

0

Решение

Вы не можете сделать это, вам нужно включить его, чтобы увидеть / получить его на стороне сервера (в противном случае «клиент не отправит его вообще»). Браузер «не включает отключенные элементы управления» в «отправке», поскольку они «не считаются« успешными »элементами управления».

поэтому лучше назначить какое-то значение этому флажку по умолчанию во время отправки.

см. эту статью: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>
0

Другие решения

Это довольно распространенный случай для webdev. Вы должны добавить некоторые hidden вход в этом случае.

<input type="hidden" name="salesIds[]" value="smth">

и оставьте свои флажки без name в целях «презентации».

0

 $('#id of checkbox').prop("disabled", false);

Это активирует поле. Если вам нужно получить значение отключенного поля, просто включите его после нажатия кнопки отправки. Это самый простой способ получить значения.

0