0
<div class="span1">
     <input type="checkbox" value="l4" id="l4" field="" defaultValue="" appEditor="true"/>
</div>

<div class="span7">
     <input type="text" class="m-wrap span10" id="fld_l4" defaultValue="" editType="intEdit" appEditor="true" disabled />
</div>

我想要做的是,如果选中复选框,请删除 fld_l4 中的禁用。

如何使用 Prototype.js 或 jQuery 做到这一点?

编辑:我正在使用带有 jQ​​uery 的原型我收到一个错误:Uncaught InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable.顺便说一下,我用 jQuery 替换了 $ 以解决冲突

EDIT2:已解决。

this.l4     = editor.instance;
editor.observe(iconstants.KEY_CHANGE,this.levelCheckboxChanged.bindAsEventListener(this))

里面 levelCheckboxChanged:

levelCheckboxChanged: function(e) {

    if($("l4").checked == false) {
        $("fld_l4").disabled = true;
    } else {
        $("fld_l4").disabled = false;
    }
},
4

5 回答 5

2

这种方式应该有效:

$("#l4").on("change", function () {
    $("#fld_l4").prop("disabled", !$(this).is(":checked"));
});

jsFiddle:http: //jsfiddle.net/J5Nt2/1/

于 2013-10-07T10:54:41.327 回答
2

你可以这样做

$('#l4').change(function(){
if(this.checked){
$("#fld_l4").removeAttr('disabled');
 }    
})

演示链接

于 2013-10-07T10:56:13.100 回答
1

这是使用 PrototypeJS 执行此操作的方法

在你的 DOM 加载事件中

document.observe('dom:loaded',function(){

    $('l4').observe('click',function(){
        $('fld_l4').writeAttribute('disabled',this.checked);
    });

});

另外,您可能想要更改“14”浏览器的 id,不喜欢您以数字开头的 id - 他们允许您这样做,但它不是 HTML 规范的一部分

于 2013-10-07T13:40:35.467 回答
1

尝试这个,

if( $("#l4:checked").length ) {
    $("#fld_l4").removeAttr("disabled");
}
于 2013-10-07T10:52:52.543 回答
0

尝试这个:

if( $("#l4").is(":checked") ) {  
   $('#fld_l4').removeAttr('disabled');
}
于 2013-10-07T10:53:04.950 回答