2012-03-02 100 views
1

我希望能夠在用戶開始在文本字段中輸入時禁用頁面上的選擇菜單。這是因爲文本字段是輸入數據的另一種方式,禁用下拉菜單將有助於使其更清晰。基於文本字段值動態禁用選擇菜單

我知道我可以使用這樣的:

<select name="specialty" id="specialty" disabled="disabled"> 

永久禁用的選擇,但有動態分配該屬性的方式,當文本字段的值更改?我知道沒有css屬性可以完成文本輸入和textareas。

的東西,我發現是內選擇禁用選項一個jQuery解決方案:

Disable select options based on value *through the HTML only!*

我試圖修改此禁用整個選擇,但沒有成功(文本字段的id爲testinput):

<script type="text/javascript"> 

$("#testinput").change(function(){ 
    $("#specialty").attr("disabled","disabled"); 
} 
); 

</script> 

這是一個簡化版本(真正的功能應該檢查testinput字符串的長度,決定是否啓用或禁用基於這樣的選擇),但如果有人能幫助我得到這個工作,然後修改它很容易。

回答

0

對我來說,它的工作原理,如果事件處理程序被宣佈後的DOM已準備就緒:

<script type="text/javascript"> 

$(document).ready(function() { 
$("#testinput").change(function(){ 
    $("#specialty").attr("disabled","disabled"); 
} 
); 
}); 

</script> 

然而,這樣選擇框只會在輸入框失去焦點後纔會被禁用。您可能想使用其中一個按鍵事件。

+0

OK現在有事情真的很混亂。我從頁面中刪除了所有的Javascript/JQuery,包括事件調用,現在選擇框一直處於禁用狀態! – jovan 2012-03-02 17:29:58

+0

@robert:你確定你已經從HTML中刪除了'disabled =「disabled」'? – 2012-03-02 17:30:47

+0

這從來沒有在HTML中,我只是再次檢查,它不在那裏。這真是令人困惑。在頁面上絕對沒有調用Javascript,但select被禁用。 – jovan 2012-03-02 17:32:03

0

試試這個,而不是jQuery的

document.getElementById('testinput').disabled = true; 
0

嘗試

$("#specialty").attr("disabled", true); 
0

您的代碼應該按照書面形式工作(例如參見http://jsfiddle.net/3QXnq/)。但有一點要記住 - 文本輸入的onchange事件只有在焦點離開文本框時纔會被觸發。換句話說,直到他們繼續前進,下拉菜單纔會被禁用。

如果要在開始鍵入時立即禁用它,則需要使用其他事件,例如onfocus或onkeydown。

0

如果使用jQuery版本> = 1.6,使用道具()方法爲 '已禁用'

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

不清楚自己想要什麼測試,但這裏的基本

$("#testinput").change(function(){        
    var value=this.value; 
    var test= value=='' || value.length===x; 
    $("#specialty").prop("disabled",test);// will enable/disable based on test 

})