2012-03-21 1 views
1

jsbin 링크 : http://jsbin.com/axevid/2 < - 개방하여 웹킷 브라우저 (크롬이나 사파리) 맞춤 버튼 태그로 비활성화 된 버튼을 시뮬레이트하는 방법은 무엇입니까?

일반 버튼이 비활성화

, 모든 이벤트도 사용할 수 없습니다. 나는 커스텀 버튼을위한 커스텀 태그 (프로젝트 요구의 일부)를 만들었다. 하지만 버튼을 사용할 수없는 상태에서 바인드 된 이벤트를 사용할 수 없도록 설정하고 다시 사용할 수 있도록 설정하려면 어떻게해야합니까?

자바 스크립트 MVC를 사용하고 있습니다. 나는 이벤트를 불가능하게하는 함수를 보았다고 생각하지만, 나는 그것이 어디에 있는지 잊어 버렸다.

EDIT : 코드는 모든 사용자 지정 단추에서 작동해야하는 플러그 인이어야합니다. 즉, 각 바인딩 된 이벤트에 if 문을 포함하고 싶지 않습니다. 어떤 아이디어? 감사.

답변

0

컨트롤을 만들 때 방지하려는 이벤트 (예 : "click""keypress")에 대한 컨트롤을 이벤트 수신기에 추가해야합니다. 그런 다음 다른 사람이 이벤트를 보지 못하도록하려면 처리기에서 event. stopImmediatePropagation()으로 전화하십시오.

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

편집했습니다. 에드. 각 이벤트 리스너에 if 문을 포함시키고 싶지 않지만 모든 파일에 포함 할 수 있고 다른 이벤트를 취소 할 수있는 일반 코드를 갖는 것이 더 좋습니다. – Sherzod

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

0

(I 귀하의 요청에서 이해되는)을 의미 하는가를

예를 들어

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

질문을 편집했습니다. 각 이벤트 리스너에 if 문을 포함시키고 싶지 않지만 모든 파일에 포함 할 수 있고 다른 이벤트를 취소 할 수있는 일반 코드를 갖는 것이 더 좋습니다. – Sherzod

관련 문제