我的代码在IE和Opera中多次执行代码,但在FF,Chrome和Safari中都有问题。我正在使用最新的jQuery,验证插件和表单插件。我的代码从下面的HTML来源:代码在IE/Opera中多次运行
<form action="/case_study/php/survey_submit.php" id="mt_survey" method="post">
...
...
<fieldset id="submit_button_box">
<input id="submit_button" type="submit" value="Submit Case Data" />
</fieldset></form>
当我点击提交按钮,应该运行下面的jQuery:
$('#mt_survey').submit(function() {
if (($("#mt_survey").valid() == true) || confirm("Unfinished form, continue saving as temporary?")) {
$('#mt_survey').ajaxSubmit({
data: {table: "mt_data"},
target: '#messages',
success: function() {
$('#messages').fadeIn('slow');
$('html, body').animate({ scrollTop: 0 }, 0 );}
});
}
return false;
});
现在,当我点击提交按钮第一次工作的。此时,表单将被清除以用于下一组数据。这是通过以下代码完成的。
$('#clear_form').click(function() {
$("#mt_survey").resetForm();
$("#messages").replaceWith('<div id="messages"></div>');
$("#messages").hide();
$("#escort_div").hide();
$("#transport_a_div").hide();
$("#transport_l_div").hide();
$("#item_div").hide();
$("#item2_div").hide();
$("label.error").hide();
$("#correction_button").attr('disabled', 'disabled');
$("#submit_button").attr('disabled', '');
});
现在,一旦完成,表单get再次填写,并提交再次点击。但是这次在IE和Opera中,它的代码会运行多次。我知道它肯定会运行多次,因为我通过将警报放在那里进行检查,但大多数情况下它多次调用我的“survey_submit.php”文件并将数据插入到MySQL中。任何想法为什么?这一直困扰我很长一段时间,我没有看到它为什么这样做的理由。
'$(“#messages”)。empty();'而不是'$(“#messages”)。replaceWith('
');'? – 2011-09-12 12:12:25resetForm()是做什么的?这不是我意识到的标准jQuery方法。 – alexp 2012-01-13 20:20:50
我建议在jquery中创建一个“计数器”,如果要保存表单的临时副本,则将其设置为1,否则默认为0.在.submit {}上检查计数器的值,并在提交之前暂停提交根据之前做过的事情,将目标移至“action =”目标。 – Ortund 2012-01-18 06:01:09