我有一个函数,当时间达到0时,开始按钮被点击时,倒计时时间,表单应该自动提交,但当我使用preventDefault()时,表单提交两次,输出错误event.preventDefault不是一个函数
以下是我的代码
<script>
$(document).ready(function () {
$('#startbutton').click(function (e) {
e.preventDefault()
var t = $(this).attr('timevalue');
var fiveMinutes = 60 * parseInt(t);
$(function ($) {
$('#festus').hide();
display = $('#time');
startTimer(fiveMinutes, display);
});
});
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
var __timer = setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.text(minutes + ":" + seconds);
if (--timer < 0) {
clearInterval(__timer);
var form_id = $('#questionsandanswers').serializeArray();
var url = $('#questionsandanswers').attr('action');
$(function (event) {
event.preventDefault();
$.post(url, form_id, function (data) {
alert('time is up you can no longer proceed');
});
});
}
},1000);
}
});
</script>
我可以做些什么来避免表单重复提交?
发布于 2018-05-31 17:10:12
既然你的html丢失了,但是你写了你想要提交一个,你应该这样做:
$(function() {
$('#form').on('submit', function(event){
event.prevenDefault(); // stops submitting the form
//timer logic here
// ...
// then call $.post to submit your form via ajax
});
});
不要嵌套您的jQuery Dom就绪函数。
发布于 2018-05-31 16:52:15
罪魁祸首就在这里:
$(function (event) {
event.preventDefault();
$.post(url, form_id, function (data) {
alert('time is up you can no longer proceed');
});
}
$(function)
是一种jQuery方式,表示您希望在页面加载后立即执行函数(类似于$(document).ready
)。未在该作用域中定义event
参数。
也许你想把这段代码放在别的地方?您可以尝试定义一个单独的函数,在该函数中调用$.post
,并在计时器超时时调用它。
function postForm(url, form_id){
$.post(url, form_id, function (data) {
alert('time is up you can no longer proceed');
});
}
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
var __timer = setInterval(function () {
//...........
if (--timer < 0) {
clearInterval(__timer);
var form_id = $('#questionsandanswers').serializeArray();
var url = $('#questionsandanswers').attr('action');
postForm(url, form_id);
}
},1000);
}
});
https://stackoverflow.com/questions/50620248
复制相似问题