2012-04-26 62 views
1

我認爲這樣可行,但它不會,我錯過了什麼?用jQuery取消默認的下拉菜單功能

HTML

<select id="TaskId"> 
<option>A list of options</option> 
</select> 

jQuery的

<script type="text/javascript"> 
$("#TaskId").click(function(e){ 
    e.preventDefault(); 
}); 
</script> 
+1

你的目標是...什麼? – bhamlin 2012-04-26 20:23:45

+0

爲什麼不簡單地刪除選項?你想做什麼? – 2012-04-26 20:23:45

+1

請參閱此討論:http://stackoverflow.com/questions/3176812/is-it-possible-to-use-event-preventdefault-with-a-select-element-with-jque – keune 2012-04-26 20:24:19

回答

2

e.preventDefault根本不爲下拉點擊環境中工作,使用:

代碼1:

$("#TaskId").mousedown(function(){ 
    return false; 
}); 

你可以使用這個太:

代碼2:

$("#TaskId").mousedown(function(e){ 
    e.preventDefault(); 
}); 

警告:e.preventDefault()的事件在Firefox和Opera處理錯誤。

這可能是你想達到什麼樣的解決方案:

代碼3:

$("#TaskId").prop('disabled', true); 
$("#TaskId").prop('disabled', false); 

代碼4: 如果你不 與剛玩想要禁用所有的事件處理,看看這個例子可能有所幫助:

DEMO的代碼4:http://jsfiddle.net/AHEex/

DEMO的代碼1和2:http://jsfiddle.net/oscarj24/JcpPU/

希望這有助於:-)

+0

不錯,但它不適用於Firefox。如上所述,這可能是一個Firefox的錯誤,因此不是你的代碼的錯誤。 – 2012-04-26 20:30:14

+0

@TravisJ是的,你是對的,看看我可能的解決方案,我編輯我的帖子。 – 2012-04-26 21:44:19

+0

@TravisJ我看着你不想禁用所有的事件處理,也許我的最後一個例子可以幫助。 – 2012-04-27 02:32:56

1

爲什麼不能簡單地禁用選擇字段?它會導致期望的行爲並向用戶顯示發生了什麼。而不是安裝點擊監聽器,只需要

$("#TaskId").prop("disabled", true); 
+0

不是一個壞主意,我喜歡向用戶展示發生了什麼的想法,所以+1。但是,禁用該屬性將不幸地禁用該元素的所有事件處理,這絕對不是理想的。 – 2012-04-26 23:01:11