2012-03-21 35 views
1

jsbin鏈接:http://jsbin.com/axevid/2 < - 開放使用的Webkit瀏覽器(Chrome或Safari)如何使用自定義按鈕標籤模擬禁用的按鈕?

當常規按鈕被禁用,所有的事件都禁用了。我爲自定義按鈕創建了自定義標籤(項目需求的一部分)。但是,我該如何做到這一點,以便在禁用按鈕時禁用綁定事件並在啓用後將其恢復。

我正在使用Javascript MVC。我想我看到了一個禁用事件的功能,但我忘記了它在哪裏。

編輯:代碼應該是一種插件,它應該適用於所有自定義按鈕。換句話說,我不想在每個綁定事件中包含if語句。有任何想法嗎?謝謝。

回答

0

當您創建控件時,您還需要爲其添加事件偵聽器以用於要防止的事件(可能爲"click""keypress")。然後,在處理程序中,如果要防止其他人看到該事件,請致電event. stopImmediatePropagation()

例如:

btn.addEventListener("click", function(event) { 
    if (btn.disabled) { 
     event.stopImmediatePropagation(); 
    } 
}); 
+0

我編輯過編輯這個問題。我不想在每個事件監聽器中包含if語句,但更希望擁有一個通用代碼,我可以將其包含在所有文件中,並取消其他事件。 – Sherzod 2012-03-21 20:25:48

0

這將工作:http://jsbin.com/axevid/3

我做出以下部分的變化:

$(document).delegate('abutton', 'click', function(e){ 
    if($(this).attr('disabled')){ 
    e.preventDefault(); 
    return; 
    } 
    alert("Custom button"); 

}); 
+0

我編輯了這個問題。我不想在每個事件監聽器中包含if語句,但更希望擁有一個通用代碼,我可以將其包含在所有文件中,並取消其他事件。 – Sherzod 2012-03-21 20:26:42

0

請問你的意思(因爲我從你的要求理解)

$(function() { 
$("abutton").each(function() { 
if($(this).attr("disabled")) { 
e.preventDefault(); 
return; 
}); 
}); 
+0

我編輯了這個問題。我不想在每個事件監聽器中包含if語句,但更希望擁有一個通用代碼,我可以將其包含在所有文件中,並取消其他事件。 – Sherzod 2012-03-21 20:27:15