2010-07-23 2 views
0

해결 방법을 찾을 수 없습니다. 이전 setted submit 이벤트 핸들러를 재정의해야합니다. 내 예제에서는 iframe 페이지가 있고, 자체 submit (유효성 검사 오류가있을 수 있으며 false를 반환 할 수 있음)이 있습니다. 따라서 다음을 수행해야합니다.jquery (1.3.2)로 양식 제출 이벤트 덮어 ​​쓰기

편집 : 더 명확하게 말하면 문제는 이벤트를 재정의하지만 이전 처리기를 유효성 검사로 잃어 버리지 않습니다.

Edit2가 : 나는 JQuery와 1.3.2

내가 솔루션의 또 다른 종류의거야를 사용하고 있습니다,하지만 난 그렇게 할 수있는 방법에 대한 호기심을 느꼈다.

감사합니다.

+0

이러한 변수 ("content", "form", "previous_form_submit")는 모두 'var' 키워드로 선언해야합니다! 지금은 페이지를 통틀어 세계화되었습니다! – Pointy

+0

또한 이미 "바인딩 해제"를 호출하고 있으므로 이전 제출 핸들러를 저장하는 방법에 대한 질문이 실제로 있습니까? – Pointy

+0

예, 원래 코드에서 추출한 것입니다. 예, 내 말은 : 현재 제출 이벤트 핸들러를 재정의해야하지만 이전 핸들러를 저장해야합니다. 예를 들어 하나의 이전 핸들러에서 유효성 검사를 수행해야합니다. – Hugo

답변

1

이벤트 핸들러가이 경우에, .data()에 의해 접근, 요소의의 expando 데이터 저장소에 저장되며, 이벤트 핸들러 .data('events'), 다음 바인딩에 대한 .submit을 등 핸들러, 클릭에 대한 .click,


제출 jQuery를 1.4 버전 :

만약 형태했다 하나는 같을 것이다 핸들러 제출

,433,453을

$.each(form.data("events").submit, function(i, h) {  
    var handler = h.handler; 
    //do something with handler 
}); 

의 jQuery 1.3.x의 버전 :

예를 들어 $.each() 사용 :

그렇지 않으면 당신은 $.each() 예를 들어 사용하여, 그들을 통해 루프 필요

여기서 루프하는 것이 가장 좋습니다. 덱스는 청소되지 않았습니다. 처리기가 첫 번째 항목이 아니기 때문에 이 undefined 일 수 있습니다. 이 처리기 인 경우에도입니다.

+0

감사합니다. Nick, jquery 1.3.2를 사용하고 있습니다. – Hugo

+0

@Hugo - 1.3.2에서 약간 다른 오브젝트 레이아웃을 표시하도록 업데이트되었습니다. –

+0

@Nick - 다시 한번 감사 드리지만 form.data ("events")는 아무 것도 반환하지 않습니다. 편집 : form.data ("events")가 정의되지 않았습니다 – Hugo