Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据复选框启用和禁用文本框_Javascript_Textbox - Fatal编程技术网

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

Javascript 根据复选框启用和禁用文本框,javascript,textbox,Javascript,Textbox,我试图在复选框未选中时禁用文本框,在javascript中选中复选框时启用文本框 这是我的代码,但它不起作用: if($productsArray[$i]) { $productName = $productsArray[$i]->getProductName() ; $id = $productsArray[$i]->getId(); $product = $control->getNonFre

我试图在复选框未选中时禁用文本框,在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>";
    }
if($productsArray[$i])
{
$productName=$productsArray[$i]>getProductName();
$id=$productsArray[$i]->getId();
$product=$control->getNonFreshProductById($id);
$personAmount=$product->getPersonAmount();
回声“;
echo“
“$productName.”; 回声“
”; 回声“; 回声“; }
使用jQuery,您可以执行以下操作:

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

没有jQuery,您可以执行以下操作:

$( '#myInput' ).prop( 'disabled', $('#mycheckBox').is( ':checked' ) );
document.getElementById('myInput').disabled = document.getElementById('mycheckBox').checked;
这种方法有点脏,我发现这个问题和答案更符合我的喜好:


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

JSFIDLE示例:

示例代码:

编辑:要在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>

功能启用元素(元素){
$(元素).removeAttr('disabled');
}
功能禁用元素(元素){
$(element.attr('disabled','disabled');
}
函数checkboxChangeHandler(){
变量复选框=$(“#ckb”),
文本框=$('txb');
if(checkbox.is(':checked'))
{
enableElement(文本框);
}
其他的
{
禁用元素(文本框);
}
}
$('#ckb')。on('change',checkboxChangeHandler);

带或不带jQuery?这是什么语言?请不要将所有HTML放在字符串中这只会在选中复选框时禁用它,取消选中时不会启用它查看编辑。添加else语句并调整道具应该可以切换。谢谢Matt。。我有了这个想法,我在我的代码中使用了相同的逻辑,它只是不起作用,我不知道为什么:(谢谢回答。但是我可以把这个代码放在我的PHP代码中吗?我相信是的,你所要做的就是添加脚本标签,请参阅编辑。