2013-10-07 37 views
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做到這一點?

編輯:我使用的原型使用jQuery 我得到一個錯誤: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; 
    } 
}, 
+0

檢查這一點,如果你想出來的切換禁用http://jsfiddle.net/Alfie/suB2N/ – Anton

回答

1

這裏是PrototypeJS

您的DOM加載事件

內做到這一點的方式
document.observe('dom:loaded',function(){ 

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

}); 

另外,您可能需要更改瀏覽器不喜歡你在開始的ID與數字「14」的ID - 他們讓你做,但它不是HTML規範的一部分

+0

感謝您的提示,順便說它不是14(十四),它是14。 1和l是非常相似的這種字體:) – FreshPro

+0

啊是的,我看到 - 編輯我的帖子,以解決這個問題 –

+0

在最終版本中,我添加了複選框的觀察,並在按鍵事件中使用levelCheckboxChanged.bindAsEventListener(this);在levelCheckboxChanged函數裏面,像你的例子那樣做一些魔術(參見編輯)乾杯! – FreshPro

1

試試這個,

if($("#l4:checked").length) { 
    $("#fld_l4").removeAttr("disabled"); 
} 
0

試試這個:

if($("#l4").is(":checked")) { 
    $('#fld_l4').removeAttr('disabled'); 
} 
2

這種方式應該工作:

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

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

+0

請參閱編輯 – FreshPro

+0

它會以相同的方式工作。一個非常小的變化需要。更新了答案。 – melancia

+0

好吧它現在可以工作,儘管調試錯誤仍然存​​在 – FreshPro

2

你可以像下面這樣做

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

Demo Link

+0

請參閱編輯 – FreshPro

相關問題