2013-08-22 3 views
1

jQuery 1.7.2에서 jQuery 유효성 검사 플러그인 1.9.0을 사용하고 있습니다.event.preventDefault()가 Chrome 및 Opera에서 작동하지 않습니다.

jquery 유효성 검사 플러그인으로 양식의 유효성을 검사하고 싶습니다. Firefox 20.0.1 및 IE 10에서는 정상적으로 작동합니다. 그러나 Chrome (26.0.1410.64 m) 및 Opera (12.14)에서는 유효성 검사를하지 않고 양식에서 취소를 클릭 할 수 없습니다.

이 내 자바 스크립트 코드입니다 : 내가 예상대로 내 웹 홈 페이지로 돌아가 FF와 IE에서 취소를 클릭하지만 크롬과 오페라에서이 작업을 수행 할 때 내 오류 메시지가있는 경우

submitHandler: function(form) { 
    if (this.submitButton.value != 'cancel') { 
    $(form).hide(); 
    $('#load').show(); 
    $(form).submit(); 
    } 
    else { 
    event.preventDefault(); 
    } 
} 

양식으로 표시된 내용이 불완전하게 채워집니다. 두 경우 모두 event.preventDefault()가 호출되었지만 탐색기에 따라 동작이 다른 것 같습니다.

무엇이 잘못 되었을지 모르십니까?

도움 주셔서 감사합니다.

+3

'어디 event', 당신은 기본 동작입니다 막을 수 없습니다. – DevlshOne

+0

이벤트가 윈도우에 정의되어 있습니다 (event.preventDefault()를 호출하는 것은 window.event.preventDefault() 호출과 같을 것입니다 - 이벤트가 아직 높은 어휘 범위에서 정의되지 않은 경우) - 여전히 작동해야합니다. 진짜 문제는 OP가 event.preventDefault()가 의미하는 것을 이해하지 못한다는 것입니다. – Adam

+0

HTML을 표시하십시오. 그렇지 않으면, 우리는 당신을 아주 잘 도울 수 없습니다. – Sparky

답변

4

.preventDefault()의 목적을 오해하고 있습니다. 함수의 기본 동작을 방지하기위한 것이 아닙니다. 그것은 즉, 앵커 태그에서 탐색과 역사를 제거, 일반 요소의 기본 동작을 취소하는 의미 것 등

참조 : http://api.jquery.com/event.preventDefault/

AFAIK, 당신은 프로그래밍 방식에 유효성 검사를 설정하고 해제 할 수 없다. 플러그인을 .validate()으로 초기화하면 플러그인을 "취소"할 수있는 방법이 없습니다.

그러나, 단순히 몇 가지 방법이 있습니다, 버튼을 "취소"를 사용 ... 하나는 확실히 당신이 그것으로 다른 일을 할 수있는 click 핸들러를 사용 후 <form></form>의을 외부 버튼 을 취소하고 유지하는 것입니다 .

DEMO : http://jsfiddle.net/TZVA6/1

또는 다른 방법, 로켓 위험 물질에 의해 지적은 기본 submit 조치를 방지 buttontype="button" 속성을 제공하는 것입니다.

DEMO : 당신이 실제로 정의하지 않으면 http://jsfiddle.net/TZVA6/2/

+0

취소 버튼을 '

'. 단지'type = "button"'을 주면됩니다. 그렇지 않으면 "submit"버튼이 기본값이됩니다. http://jsfiddle.net/TZVA6/2/ –

+0

@RocketHazmat, 네, 그건 분명히 다른 방법입니다. – Sparky

+0

Sparky and Rocket Hazmat 감사합니다! 이 방법으로 멋지게 작동합니다! – user2708647

관련 문제