2010-02-23 6 views
0

이것은 많은 포럼에서 되풀이되는 질문이며 작동하는 솔루션이 있지만 추한 것입니다. 양식을 두 번 제출하지 못하게하려면 클릭 한 후에 버튼을 비활성화해야합니다. 나는 css 클래스를 변경하여 이미지를 비활성화하고 희미하게 만듭니다.서버 및 클라이언트 컨트롤, 이벤트 처리 처리

자바 스크립트는 litteral과 generated 부분으로 구성되어 있으며 클라이언트 측 ID와 서버 측 코드가 혼합되어 있기 때문에 동일한 기능을하는 3 가지 기능이 있습니다. 3 버튼 모두에서 작동하는 하나의 기능을 가질 수있는 방법이 있습니까? 당신의 자바 스크립트의 일부를 생성 매개 변수 또는 무언가로 ID를 취할 수있는 자바 스크립트 함수를 작성하는 대신

<asp:ImageButton ID="btnSubmit" runat="server" 
     OnClientClick="doSubmitAndDisable();" OnClick="btnSubmit_Click"/> 
<asp:ImageButton ID="btnSubmitMore" runat="server" 
     OnClientClick="doSubmitNextAndDisable();" OnClick="btnSubmitMore_Click"/> 
<asp:ImageButton ID="btnSubmitNext" runat="server" 
     OnClientClick="doSubmitMoreAndDisable();" OnClick="btnSubmitNext_Click"/> 
<script type="text/javascript"> 
function doSubmitAndDisable() { 
if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false){ 
    return false; 
}  
document.all.<%= btnSubmit.ClientID%>.className = 'disabled'; 
document.all.<%= btnSubmitNext.ClientID%>.className = 'disabled'; 
document.all.<%= btnSubmitMore.ClientID%>.className = 'disabled'; 
<%= ClientScript.GetPostBackEventReference(btnSubmit, string.Empty) %>;  
} 
function doSubmitNextAndDisable() { 
if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false){ 
    return false; 
}  
document.all.<%= btnSubmit.ClientID%>.className = 'disabled'; 
document.all.<%= btnSubmitNext.ClientID%>.className = 'disabled'; 
document.all.<%= btnSubmitMore.ClientID%>.className = 'disabled'; 
<%= ClientScript.GetPostBackEventReference(btnSubmitNext, string.Empty) %>; 
} 
function doSubmitMoreAndDisable() { 
if (typeof(Page_ClientValidate) == 'function' && Page_ClientValidate() == false){ 
    return false; 
}  
document.all.<%= btnSubmit.ClientID%>.className = 'disabled'; 
document.all.<%= btnSubmitNext.ClientID%>.className = 'disabled'; 
document.all.<%= btnSubmitMore.ClientID%>.className = 'disabled'; 
<%= ClientScript.GetPostBackEventReference(btnSubmitMore, string.Empty) %>; 
} 
</script>  

답변

0

.

ID와 필요한 변수를 변수로 설정할 수있는 init 함수를 작성하는 것이 좋습니다. 이 페이지에서 init 함수를 호출하고 모든 서버 생성 ID를 전달할 수 있습니다.

이렇게하면 Javascript가 더 견고해질 수 있으며 결국 클라이언트 측 캐싱을 활용할 수있게 별도의 파일로 이동시킬 수도 있습니다.

0

나는 동의합니다. 코드를 줄이기위한 방법을 사용하거나 단추 컬렉션을 받아 들일 수있는 JavaScript 클래스로 구조화하십시오.

버튼을 사용할 수없는 상태에서 버튼을 사용할 수 없도록 만든 기능을 찾고 있다면 버튼이있는 프레임 워크가 있습니다.이 버튼을 클릭하면 버튼을 비활성화하는 DisableOnClick 속성을 설정할 수 있습니다. X 밀리 초 후에 다시 사용할 수 있어야합니다. http://nucleo.codeplex.com입니다. 뻔뻔한 플러그 알아, 나도 알아 :-)

HTH.

+0

링크를 고맙게 생각하지만, 알 수 있듯이 클릭 한 컨트롤뿐만 아니라 사소한 것도 비활성화해야합니다. – cdonner

관련 문제