启用javascript中的复选框,并在禁用它们时获取其值

时间:2014-09-28 20:40:05

标签: 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']; ?>" /></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的任何值时,应检查相应的Checkbox。现在我不希望别人自动点击复选框。所以我禁用它们,当我在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');
});

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

3 个答案:

答案 0 :(得分:0)

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

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

并保留没有name的复选框以用于“演示”目的。

答案 1 :(得分: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>

答案 2 :(得分:0)

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

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