실수로 버튼을 두 번 클릭하는 것을 방지
-
09-06-2019 - |
문제
ASP.NET 버튼에서 상속하고 'onserverclick'을 사용하는 몇 가지 컨트롤이 있습니다.
사용자가 두 번 클릭하면 버튼이 두 개의 서버 측 이벤트를 실행합니다.어떻게 하면 이를 방지할 수 있나요?
자바스크립트를 통해 클릭 후('onclick' 속성에서) "this.disabled='true'"를 설정하려고 시도했지만 첫 번째 포스트백도 차단됩니다.
해결책
포스트백 제어를 비활성화하려면 이 예를 참조하세요.이는 당신이 달성하려는 일을 하는 데 도움이 될 것입니다.
http://encosia.com/2007/04/17/disable-a-button-control-during-postback/
다른 팁
포스트백 시 비활성화된 버튼을 표시하고 싶지는 않습니다.실수로 두 번 제출하지 않도록 하고 싶습니다.따라서 버튼을 비활성화하거나 숨기는 것은 다음과 같습니다. 서버 측 행동은 이미 게임에서 너무 늦었습니다.이 시점에서 이미 두 번째 요청이 진행 중입니다.자바스크립트로 수행하거나 서버 측 코드가 두 번 실행되지 않는지 확인해야 합니다.
FormView-Template 내부에 업데이트 패널과 버튼이 있는 경우 다음 접근 방식을 사용합니다.
<script type="text/javascript">
// Using that prm reference, hook _initializeRequest
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(InitializeRequestBuchung);
// Abfangen von Mehrfachklicks auf Buttons für asynchrone Postbacks im Updatepanel
function InitializeRequestBuchung(sender, args) {
var arrButtonIds = ["ButtonInsert", "ButtonUpdate"];
// Get a reference to the PageRequestManager.
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() & jQuery.inArray(args.get_postBackElement().id, arrButtonIds) > -1) {
args.set_cancel(true);
}
}
</script>
현재 비동기 포스트백이 여전히 활성화되어 있는 경우 다음 포스트백이 취소됩니다.완벽하게 작동합니다.
며칠 전에 다른 사람이 여기 어딘가에서 이런 말을 했고 나도 동의합니다. 자바스크립트를 사용하여 간단히 숨다 버튼을 비활성화하는 대신;해당 위치에 "스피너" 이미지를 표시하여 사용자에게 무슨 일이 일어나고 있는지 알 수 있습니다.
숨기는 대신 자바스크립트를 사용하여 버튼을 교체했습니다.첫 번째 버튼을 클릭하면 회색으로 표시된 또 다른 이미지가 표시됩니다.
Button 속성 UseSubmitBehavior를 false로 설정합니다.그런 다음 버튼을 비활성화하는 OnClientClick 함수를 만듭니다.다음과 같이 보일 것입니다 :
<script type="text/javascript">
function disableFunctn(button){
button.disabled = true;
}
</script>
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="disableFunctn(this);"/>
가장 빠르고 저렴한 방법:
<asp:Button ID="button1" UseSubmitBehavior="false" OnClientClick="this.disabled=true;"/>
예를 들어 btnSave.Enable = false;를 시도해 볼 수도 있습니다.버튼이 눌렸을 때와 클릭 이벤트 루틴에서 버튼 처리가 완료되기 전.활성화하기 위해 재설정해야 하는 경우 재사용을 위해 버튼을 재설정하는 별도의 버튼이 있습니다.
또 다른 방법은 사용자에게 저장 여부를 묻는 메시지가 두 번 팝업되도록 확인 버튼을 설정하는 것입니다.
또 다른 방법은 첫 번째 발생에 플래그를 지정한 다음 두 번째 발생에 대한 팝업을 설정하여 두 번째 또는 후속 사용을 확인하는 것입니다.