jQuery validator 플러그인 + ajax 제출이 작동하지 않음
저는 bassistance.de 의 jQuery validator 플러그인(1.11)을 사용하며 php를 통해 제출합니다.이제 JavaScript 코드 끝에 제출 처리기에 Ajax 호출을 추가했지만 호출이 작동하지 않으며 Firebug 콘솔에 대한 호출도 없습니다.
사례 1 사이트 시작 부분에 Ajax 호출을 넣으면 작동하지만 validator 플러그인은 더 이상 표시되지 않습니다.
CASE 2 만약 내가 제출 핸들러 안에 통화를 넣는다면, 그것은 존재하지 않고 양식은 php에 의해 제출됩니다.
CASE 3 페이지 끝에 코드를 넣더라도 연락처 양식은 여전히 php에 의해 제출됩니다.
아약스의 전화입니다.
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "formfiles/submit.php",
data: $(this).serialize(),
success: function() {
$('#contactform').html("<div id='message'></div>");
$('#message').html("<h2>Your request is on the way!</h2>")
.append("<p>someone</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/ok.png' />");
});
}
});
return false;
});
무슨 일인지 아는 사람?
도움을 주셔서 미리 감사드립니다. 머리를 싸매고 있습니다.
편집 문제를 더 잘 이해하기 위해, 여기 완전한 자바스크립트가 있습니다.
$(document).ready(function(){
$("#contactform").validate();
$(".chapta").rules("add", {maxlength: 0});
var validator = $("#contactform").validate({
ignore: ":hidden",
rules: {
name: {
required: true,
minlength: 3
},
cognome: {
required: true,
minlength: 3
},
subject: {
required: true,
},
message: {
required: true,
minlength: 10
}
},
submitHandler: function(form) {
$("#contactform").submit(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: "formfiles/submit.php",
data: $(this).serialize(),
success: function() {
$('#contactform').html("<div id='message'></div>");
$('#message').html("<h2>Your request is on the way!</h2>")
.append("<p>someone</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/ok.png' />");
});
}
});
return false;
});
},
});
});
편집 2
셀렉터와 나머지는 모두 괜찮은 것 같습니다.
<form action="#n" class="active" method="post" name="contactform" id="contactform">
당신의.ajax
내부에 속함submitHandler
jQuery Validate 플러그인의 콜백 함수입니다.
submitHandler, 콜백, 기본값: 기본(기본) 양식 제출
양식이 유효할 때 실제 제출을 처리하기 위해 콜백합니다.형식을 유일한 인수로 가져옵니다.기본 제출을 바꿉니다.유효성 확인 후 Ajax를 통해 양식을 제출할 수 있는 올바른 위치.
당신의 또 다른 문제는 당신이 전화하고 있다는 것입니다..validate()
두 번. 첫 번째로 호출된 후에 다른 인스턴스는 무시되고 전달하려는 모든 규칙도 무시됩니다..validate()
폼에서 플러그인을 초기화할 준비가 되면 메서드가 한 번 호출됩니다.
마지막으로, 당신은 그것을 넣을 필요가 없습니다.submit
로의 핸들러.submitHandler
콜백 함수입니다.
데모: http://jsfiddle.net/nTNLD/1/
$(document).ready(function () {
$("#contactform").validate({
ignore: ":hidden",
rules: {
name: {
required: true,
minlength: 3
},
cognome: {
required: true,
minlength: 3
},
subject: {
required: true
},
message: {
required: true,
minlength: 10
}
},
submitHandler: function (form) {
$.ajax({
type: "POST",
url: "formfiles/submit.php",
data: $(form).serialize(),
success: function () {
$(form).html("<div id='message'></div>");
$('#message').html("<h2>Your request is on the way!</h2>")
.append("<p>someone</p>")
.hide()
.fadeIn(1500, function () {
$('#message').append("<img id='checkmark' src='images/ok.png' />");
});
}
});
return false; // required to block normal submit since you used ajax
}
});
});
DOM(사용자 양식)이 이전에 로드되었는지 확인하기 위해 코드를 문서 준비 콜백에 넣어야 합니다.
$(document).ready(function() {
//Code
});
기존 시스템을 제거해야 합니다..submit()
에서submitHandler
유효성 검사 초기화 외부에서 내부에 배치합니다.ready
그다음에 안에.submitHandler
전화만 하는 당신form.submit();
와 함께form.submit();
너가 트리거submit
그러면 다른 하나는 해고됩니다.
또는 당신이 당신의$.ajax
에 직접.submitHandler
.
지금은 제출 단추를 클릭할 때만 이벤트 수신기를 추가합니다.그건 사실 너무 늦었어요.그 직후에 Ajax 없이 양식이 제출됩니다.
그것은 쉽답니다.이 작업만 수행
if ( $( "label.error" ).length===false || $( "label.error" ).is(":visible")===false) {
here set the ajax
}
언급URL : https://stackoverflow.com/questions/15625195/jquery-validator-plugin-ajax-submitting-not-working
'programing' 카테고리의 다른 글
MariaDB 테이블의 INSERT에 이미지 업로드가 실패하고 PDO::PARAM_LOB (0) | 2023.09.05 |
---|---|
도커 컨테이너에서 PATH 환경 변수를 영구적으로 업데이트하는 중 (0) | 2023.09.05 |
ASP에서 리디렉션하는 방법.넷코어 레이저 페이지 (0) | 2023.09.05 |
.net의 메모리 데이터베이스에 있습니다. (0) | 2023.09.05 |
윈도우즈 7에서 명령줄별 SQL 파일 가져오기 (0) | 2023.09.05 |