2009-08-13 3 views
3

업데이트중인 페이지에 대한 제출 버튼을 두 번 클릭하지 못하게하려고합니다. 문제는 서버 측 유효성 검사가 수행되어야 사용자가 계속 업데이트하기 전에 업데이트를 수행해야하는지 결정해야한다는 것입니다. 현재 내 양식에 대한 제출 이벤트에 다음 코드가 있습니다.서버 측 유효성 검사를 통한 더블 클릭 방지

<asp:Button ID="SubmitPayment" runat="server" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" /> 

페이지가 유효성 검사를 통과하지 못하는 곳이 문제가됩니다. 이 인스턴스에서 버튼을 활성화하려고 시도한 모든 것이 실패했습니다. 제출 버튼이 비활성화 된 상태에서 수정 된 정보를 다시 제출하기가 어렵습니다. 다시 유효하게하는 유효성 검사가 끝나면 다음 두 가지 방법을 모두 시도했습니다.

SubmitPayment.Enabled = true; 
SubmitPayment.Attributes.Add("disabled", "false); 

이 컨트롤을 다시 사용하려면 어떻게해야합니까? 이것은 Visual Studio 2005에 있습니다. 미리 감사드립니다.

-edit- 내가 사용한 접근 방식은 다음과 같습니다. 비활성화 된 추가 유인 버튼을 추가하고 display CSS 속성을 none으로 설정했습니다. 그런 다음 제출 단추를 숨기고 OnClientClick 이벤트에서 미끼 단추를 표시하는 javascript를 사용했습니다. 마지막으로, 서버 측 메소드의 끝은 버튼의 CSS 속성을 업데이트하여 나중에 숨기거나 표시합니다.

코드 세그먼트는 다음과 같습니다. 덕분에 다시 도움

function PreventDoubleClick() 
    { 
     var sp = document.getElementById("SubmitPayment"); 
     var db = document.getElementById("DecoyButton"); 
     sp.style.display = "none"; 
     db.style.display = "inline"; 
    } 

<asp:Button ID="SubmitPayment" runat="server" OnClientClick="javascript:PreventDoubleClick();" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" /> 
<asp:Button ID="DecoyButton" Enabled="false" runat="server" style="display:none;" Text="Please Wait..."/> 

DecoyButton.Style.Add("display", "none"); 
SubmitPayment.Style.Add("display", "inline"); 
+0

SubmitPayment.Attributes.Add ("disabled", "true"); 또는 SubmitPayment.Attributes.Remove ("disabled", "false"); 그 일을하지 않니? 호기심에 문제가 있습니다. 모든 것을 두 번 클릭하는 나쁜 사람에 대해해야 할 일 (틀림없이, 자신의 잘못이 아니라 데스크톱 인터페이스 디자이너의 잘못). – mcandre

답변

1

내가 전에 비슷한 문제가 있었다 내가 생각 해낸 최선의 해결책은 버튼을 숨기고 기다려주십시오 (또는 검증) 메시지로 교체하는 것이 었습니다. 유효성 검사에 실패하면 버튼을 다시 표시 할 수 있습니다.

+0

내가 가장 좋아하는 접근법이라고 말할 수는 없지만 그것이 효과가 있다는 것을 알 수있는 유일한 방법입니다. 제안 해 주셔서 감사합니다. –

+0

내 게시물에 추가 한 솔루션에는 다른 문제가 하나 있습니다. 여러 번 실행하면 미끼 버튼이 페이지에 영구적으로 남아 있습니다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? –

관련 문제