【发布时间】:2018-05-16 19:24:38
【问题描述】:
我有一个简单的基于 HTML 的表单,如下所示,它会在点击时不断刷新页面。
<form id="register" action="#" method="POST">
<div class="input-group">
<input class="form-control form-control-sm" placeholder="Email Address" name="email" type="text">
<input type="hidden" name="form" value="register">
<input type="hidden" name="type" value="websiteregistration">
<span class="input-group-append">
<button type="submit" class="btn btn-light" data-name="register" onclick="formSubmit(this)">Go!</button>
</span>
</div>
</form>
我试图阻止它在按下提交按钮时重定向。
(function($) {
function formSubmit(e){
e.preventDefault(); //This will prevent the default click action
e.stopPropagation();
var frm = $('#'+ $(this).data('name') +'');
$.ajax({
type: frm.attr('method'),
url: '(url)',
data: frm.serialize(),
success: function (data) {
console.log('Submission was successful.');
console.log(data);
},
error: function (data) {
console.log('An error occurred.');
console.log(data);
}
});
return false;
}
});
我添加了 return false 以阻止它重定向,以及 PreventDefault,但是在发送数据时页面仍然刷新(顺便说一下正在发送数据)。
我也尝试使用 $().submit 来完成,但结果相同。 (出于安全原因,我隐藏了网址,但提交本身可以工作)。
使用 name-data 属性是因为我在页面上有几个相同的表单,这样我可以使其可重用
【问题讨论】:
-
收听表单的
submit事件而不是按钮的click。 -
从你的表单标签中移除
action属性,然后监听表单的submit事件。 -
试过(如我上面所说)仍然不起作用
-
将
<button type="submit"更改为<button type="button"
标签: javascript jquery html ajax