2009-04-02 2 views
1

나는 간단한 ASP.NET 페이지에 쓴 :제출 이벤트가 ASP.NET의 jQuery에 걸리지 않는 이유는 무엇입니까?

jQuery(document).ready(function() { 
jQuery("form").submit(function() { 
    alert("kikoo"); 
    return false 
    }); 
}); 

을 내가 (버튼, 링크, ... 클릭) 제출할 때, 나는 경고 상자가 표시되지 않습니다.

는 "바이 패스"를 제출하는 것이 asp.net 페이지에 뭔가 이유

사람이 말해 줄 수 (나는 dopostback 자바 스크립트 방법에 대해 생각)이 있습니까?

+0

페이지에 처리기를 설정하지 못하게하는 자바 스크립트 오류가 있습니까? – tvanfosson

+0

정확히 어디서 언제이 블록을 실행합니까? – annakata

+0

jQuery와 동일한 문제가 발생하여 Pitming에서 제시 한 것처럼 _DoPostback 아키텍처로 인해 의심되는 ASP.NET 양식의 전송 이벤트를 캡처하지 못했습니다. 여기에 아무도 진지한 생각을하지 않은 것 같습니다. –

답변

-1

문제점을 발견했습니다.

일부 버튼을 클릭하면 form.submit을 수행하는 모든 javascript 메소드가 호출됩니다. 이것은 jQuery에 의해 잡히지 않습니다.

버튼의 동작을 수정하면 문제가 없습니다.

모두에게 감사드립니다.

+0

해결책을 찾았습니까? –

0

jQuery submit() 기능의 사용에 대해 혼란 스러울 수 있습니까?

제출 기능이 실제로 양식을 제출한다고 생각하기 때문에 페이지로드시 경고 대화 상자가 표시 될 것으로 예상됩니다. 그러나 당신이 그것을 사용하는 방식으로, submit() 함수는 실제로 양식에 이벤트를 첨부하므로 실제로 을 수행하면이 전송되고 함수가 실행됩니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>Title</title> 
    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript"> 
    $(function() { 
     $("form").submit(function() { 
      alert("kikoo"); return false 
     }); 
     // you could also chain this onto the end of the previous function 
     $("form").submit(); 
    }); 
    </script> 
</head> 
<body> 
    <form><input type="submit" /></form> 
</body> 
</html> 
:

여기
$("form").submit(); 

가 기본으로 마이크 C의 답변을 사용하여 확장 예제 :

실제로,이 같은 인수없이) (제출 사용해야하는 사용자 코드에서 제출 트리거하려면

+0

OP는 제출을 활성화하는 단추와 게시 된 코드의 경고를 이벤트 처리기를 통해 명시 적으로 언급합니다. – annakata

+0

annakata : 미안하지만 나는 당신의 대답에 의문을 제기하지 않습니다. 내 영어 수준이 너무 낮습니다. Ryan : 나는 양식을 제출하려하지 않습니다.양식을 제출할 때 동작을 바인딩하려고합니다. – Pitming

+0

사과드립니다. 나는 "버튼을 클릭하여"부분을 놓쳤다. 내 답변에있는 정보는 사람들을 검색하는 데 여전히 유용하므로 추측하겠습니다. –

0

Finaly 나는 포스트 백 메소드가 내 처리기를 오버라이드한다는 것을 알았지 만 (아직도 이유를 이해하지 못함). 그래서 여기

내가 무슨 짓을 : 1. 내가 JS 기능 다음

function MyBehaviour() 
{...} 

2. 내가 "고전"jQuery를 다음

jQuery(document).ready(function() { 
    jQuery("form").submit(EncodeAllTxtControl); 
}); 

3. 바인딩 않았다 내 행동 선언 각 양식에, 나는 myu 행동을했지만 이미 선언 된 것들을 유지했다.

jQuery("form").each(function() { 
     var oldonSubmit = this.onsubmit; 
     if (typeof oldonSubmit != 'function') { 
      this.onsubmit = function() { 
       MyBehaviour(); 
       return true; 
      }; 
     } 
     else 
      this.onsubmit = function() { 
       MyBehaviour(); 
       oldonSubmit(); 
       return true; 
      }; 
    }); 

그리고 이것은 보인다. 오크.

관련 문제