jquery.min.js:2 Uncatch TypeError: event.preventDefault 不是一个



我有一个函数,当时间达到 0 时单击开始按钮时,倒计时时间表单应该自动提交,但当我使用 preventDefault(( 输出错误事件时表单提交两次。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>

我该怎么做才能避免表格提交两次

由于您的 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-Ready函数。

罪魁祸首就在这里:

$(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);
}
});

相关内容

最新更新