2009-10-01 8 views
2

onclick에서 페이지를 다시 게시하기 전에 버튼의 onclick 이벤트 (전송하지 않음)를 차단하고 싶습니다.onclick 이벤트를 가로 채는 방법

나는 몇 가지 문제에 봉착 :

$(document).ready() { function() { 
    function validate() { 
     ... 
    } 

    var oldOnClick = $("input[value=OK]").attr("onclick"); 
    $("input[value=OK]").attr("onclick", "if(!validate()) { return false; }" + oldOnClick)); 
}); 

답변

7

$(document).ready(function() { 
    function validate() { 
    // ... 
    } 

    var oldOnClick = $("input[value=OK]").get(0).onclick; 
    $("input[value=OK]").click(function (e) { 
    if(!validate()) { 
     return false; 
    } 
    oldOnClick.call(this, e); // enforce the context and event argument 
    }); 
}); 
+0

이것은 정확히 내가 원했던 것입니다. 그것은 여전히 ​​포스트이지만 여기서부터 일할 수 있습니다. –

+0

새로운 클릭 이벤트를 할당하기 전에 onclick 이벤트를 언 바운드했습니다. 이것은 효과가 있었다. 다시 한 번 감사드립니다! –

+0

반갑습니다. LB! – CMS

0

OnSubmit이 양식을 제출 직전이라고합니다. 이벤트를 취소 할 수도 있으므로 양식이 제출되지 않습니다.

3

대신에 onClick 이벤트를 가로 채려고 시도하는 대신 submit event을 사용해야합니다.

왜? 간단하고, 클릭하여 모든 양식을 제출하는 것은 아니며, 탭에 대해, 입력하는 것은 무엇입니까?

$("form").submit(function() { // do validation/stuff here }); 트릭을 수행합니다.

양식을 제출하지 않으려면 return false;을 보내거나 취소 할 수있는 경우 return true; 수 있습니다. .submit 자체에서 유효성 검사를 수행하십시오.

+1

: 난 당신이 컨텍스트 및 이벤트 인수를 보존, 당신의 oldOnClick 함수를 호출하는 익명 함수를 사용하여 이런 일을 할 수있는, 모두가 제안하는 대신 양식의 버튼 클릭 이벤트를 처리하는 이벤트를 제출할 ASP.NET 페이지에서는 작동하지 않습니다. –

+0

그건 일을하는 방법을 문서화 한 것이므로 ASP가 엉덩이에 큰 고통이되거나 코드가 올바르지 않습니다. 제출을 멈추고 JS 경고를 통해 멈추어야하는'$ ("form"). submit (function() {alert ('Hello world.'); false false;}); – jakeisonline

+0

Jakeisonline은 좋은 점을 가지고 있습니다. 모든 사람들이 자신의 페이지를 마우스로 클릭하여 사용할 것이라고 가정하면 쉽게 넘어갈 수 있습니다. 항상 그런 것은 아닙니다. – BryanH

0
e.preventDefault(); 

이 구체적이

$("#Your_form_id").submit(function(e) { 
e.preventDefault(); 
// your code 
}); 

이 작업을 수행하는 다른 방법을 할 필요가 제이크가 말한대로, ... 몇 가지 작업을 수행 한 후 false를 반환이다 예 :

$("#Your_form_id").submit(function() { 
// your code 
return false; 
}); 

SubmitEvents에있는 Jquery 설명서를 참조하십시오.

관련 문제