在javascript中启用复选框并在禁用复选框时获取其值

在javascript中启用复选框并在禁用复选框时获取其值,javascript,php,jquery,html,checkbox,Javascript,Php,Jquery,Html,Checkbox,我有下表 <tbody> <?php foreach($redeemSales as $sale) { ?> <tr value='<?php echo $sale['id']; ?>'> <td><input type="checkbox" name="salesIds[]" value="<?php echo $sale['id']; ?>" />

我有下表

<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>
我有一个按钮,它只获取与复选框关联的所有saleid

这是密码

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

如果我从复选框中删除“已禁用”,它可以正常工作,否则它会显示“未选择任何销售”,但我不想删除禁用的复选框。我不希望用户与之交互。如何获取显示为选中的复选框的值。应该做什么

对于webdev来说,这是一个非常常见的情况。在这种情况下,您应该添加一些
隐藏的
输入

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


为了“演示”的目的,请保留不带
名称的复选框。

您不能这样做,您需要启用它以在服务器端查看/获取它(否则“客户端根本不会发送它”)。浏览器在“提交”中“不包括禁用的控件”,因为它们“不算作“成功的”控件”

因此,最好在提交时默认为该复选框指定一些值

见本文:

例如:
单击按钮上的启用/禁用
复选框

<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>

功能chk_控制(str){
if(str=='dsb'){document.getElementById('ck1').disabled=true;}
else{document.getElementById('ck1').disabled=false;}
}
PHP

这将启用该字段。如果需要获取禁用的字段值,只需在单击“提交”后启用它。这是获取值的最简单方法。

$('input[type=“checkbox”]”)。val()应为您提供该值,无论其是否禁用。在我的情况下,它为val提供了错误。如何启用所有禁用的复选框?比如说,点击按钮$('input[name=“salesIds[]”)。disabled=false;无法使用jQuery需要使用
prop()
方法。。。查看docs最有效的方法是启用它们,我如何才能在按下按钮时做到这一点在示例中,我将给出一小段代码,请尝试一下。请为您的答案添加一些解释,说明它的作用以及它如何解决问题-这将帮助将来看到您答案的其他人
<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>
 $('#id of checkbox').prop("disabled", false);