根据复选框启用和禁用文本框

时间:2014-08-11 19:42:26

标签: javascript textbox

如果未选中复选框,我尝试禁用文本框,如果在javascript中选中该复选框,则启用它

这是我的代码,但它不起作用:

        if($productsArray[$i])
        {
        $productName = $productsArray[$i]->getProductName() ;
        $id = $productsArray[$i]->getId(); 
        $product = $control->getNonFreshProductById($id); 
        $personAmount  = $product->getPersonAmount() ; 

        echo "<tr>";
        echo "<th  td valign='middle' > <br/> <input type='checkbox' name='nonFreshProduct".$i."' id ='nonFreshProduct".$i."' style='position:absolute; left:20%' onclick='document.getElementById('outcome".$i."').disabled=!this.checked;'/>".$productName."</th>";
        echo "<th  td valign='middle' style='text-align:-webkit-left'> <br/> <input type='text' name='outcome".$i."' id ='outcome".$i."'/></th>";
        echo "<input type='hidden' name='nfid".$i."' id='nfid".$id."' value='".$id." ' /></th>";
        echo "</tr>";
    }

2 个答案:

答案 0 :(得分:0)

使用jQuery,您可以:

$( '#myInput' ).prop( 'disabled', $('#mycheckBox').is( ':checked' ) );

http://api.jquery.com/prop/

http://api.jquery.com/is/

如果没有jQuery,你可以这样做:

document.getElementById('myInput').disabled = document.getElementById('mycheckBox').checked;

这种方法有点脏,我发现这个问题和答案更符合我的喜好:

Toggle Disabled Attribute on Input Based on Checkbox in jQuery

答案 1 :(得分:0)

您所要做的就是让一个处理程序监听复选框的更改事件,然后根据事件启用/禁用。

jsfiddle示例: http://jsfiddle.net/w9u09ohc/

示例代码:

编辑:要在PHP中使用javascript,您所要做的就是将脚本放在脚本标记

<script type="text/javascript">
    function enableElement(element) {
        $(element).removeAttr('disabled');
    }

    function disableElement(element) {
        $(element).attr('disabled', 'disabled');
    }

    function checkboxChangeHandler() {
        var checkbox = $('#ckb'),
            textbox = $('#txb');

        if(checkbox.is(':checked'))
        {
            enableElement(textbox);
        }
        else
        {
            disableElement(textbox);
        }
    }


    $('#ckb').on('change', checkboxChangeHandler);
</script>