2009-09-08 4 views
0

.NET 및 jQuery로 작성된 웹 사이트가 있습니다. 우리는 처리 ASP.NET 페이지에서 load 메서드를 호출하기 위해 사용자 지정 jQuery를가집니다. 해당 Ajax 호출은 클릭 핸들러에서 시작됩니다 (예 : 우리가 그것을 처리 할 아약스를 호출 클릭 해고 된 # 제출 버튼을 누르면 때jQuery에서 클릭이 발생할 때 클릭 핸들러 사용 안 함

$("#Submit").click(function(){ 
    $(a_selector).load("Process.aspx?data=" + someDataObject, null, function(){ 
    alert("Done")}); 
    } 
    return false; 
); 

우리의 문제입니다. 사람들은 버튼을 두 번 클릭하는 것처럼 보입니다. 따라서 우리는 이중 클릭으로부터 데이터베이스에 여러 결과를 얻습니다. 누구든지이 문제를 방지하는 방법에 대한 아이디어가 있습니까? JS를 통해 버튼을 비활성화하는 것과 같은 것을 생각했지만 다른 아이디어를 알고 싶습니다.

+1

(가) 버튼 아이디어를 비활성화에 어떤 문제가 당신이 원하는 방식으로 작동하는지 잘 모릅니다, 그러나 그것은 나에게 간단한 해결책처럼 보인다? – waqasahmed

답변

0

stop propagation

$("#Submit").click(function(event){ 
    event.stopPropagation(); 

    if (typeof $_submitSend == "undefined") 
     var $_submitSend = true; 
    else if ($_submitSend == true) 
     return false; 

    $_submitSend = true; 

    $(this).attr("disabled", "disabled"); 

    $(a_selector).load("Process.aspx?data=" + someDataObject, null, function(){ 
    alert("Done")}); 
    $_submitSend = false; 
    $(this).removeAttr("disabled"); 
    } 
); 
2

jQuery의 one function을 사용하십시오. 이 방법은 이벤트가 한번만 해고됩니다. 물론 버튼을 비활성화해야 사용자가 버튼을 클릭하는 것이 헛된다는 것을 알 수 있습니다. 또한 회 전자, 진행률 막대 또는 커서 스타일을 변경하여 사용자에게 상황이 발생하고 시스템이 멈추지 않았 음을 나타낼 수 있습니다.

0
$("#Submit").click(function(){ 
    $(a_selector).removeClass("class").load("Process.aspx?data=" + someDataObject, null, function(){ 
    $(this).addClass("class"); 
    alert("Done")}); 
    } 
    return false; 
); 

그런 다음 선택기로 사용할 스타일을 지정하지 않고 특정 클래스를 추가하십시오. ... :)