我一直在尝试使用jQuery提交此表单但我似乎无法在提交后停止重定向。我哪里错了?
我的表单已简化:
<form action="http://xxxxxxx" method="post" id="myform">
<input type="text" name="my_field">
<a class="last">Submit<a>
</form>
JS:
$('.last').on('click', function() {
if ($('#myform').valid()) {
$('#myform').submit();
}
$('#myform').on('submit', function(event) {
event.preventDefault();
$.getJSON(
this.action + "?callback=?",
$(this).serialize(),
function(data) {
if (data.Status === 400) {
alert(data.Message);
$('#noti').text(error).addClass('notice-error', function() {
$('.last').attr('id', '#contact-us-btn').addClass('button-error').html('Contact us');
});
$('#contact-us-btn').on('click', function() {
zE(function() {
zE.show();
});
});
} else {
console.log(data.Message);
$('#step-3').slideUp(function() {
$('#noti').text(success).addClass('text-success');
$('.next, .previous').fadeOut();
$('.panel.success').slideDown();
});
}
}
)
});
});
答案 0 :(得分:2)
这不是订单,问题是第二个事件是在第一个事件函数内部分配的(基本上它会在点击之后分配,因此表单提交)。
printf
答案 1 :(得分:0)
我相信你的事情发生了一些故障。目前,在绑定自定义处理程序之前,您将触发默认提交行为。因此,首先绑定处理程序,然后启动提交:
$('#myform').on('submit', function(event) {
event.preventDefault();
$.getJSON(
this.action + "?callback=?",
$(this).serialize(),
function(data) {
if (data.Status === 400) {
alert(data.Message);
$('#noti').text(error).addClass('notice-error', function() {
$('.last').attr('id', '#contact-us-btn').addClass('button-error').html('Contact us');
});
$('#contact-us-btn').on('click', function() {
zE(function() {
zE.show();
});
});
} else {
console.log(data.Message);
$('#step-3').slideUp(function() {
$('#noti').text(success).addClass('text-success');
$('.next, .previous').fadeOut();
$('.panel.success').slideDown();
});
}
}
)
});
$('.last').on('click', function() {
if ($('#myform').valid()) {
$('#myform').submit();
}
});