У меня есть проблема на моей странице с кодом, выполняющимся несколько раз в 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;
});
Теперь это работает, когда я нажимаю на кнопку Submit первый раз. На этом этапе форма очищается для следующего набора данных. Это делается с помощью следующего кода.
$('#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 ('
');'? –Что делает resetForm()? Это не стандартный метод jQuery, о котором я знаю. – alexp
Я рекомендую создать «счетчик» в jquery и установить его в 1, если временная копия формы должна быть сохранена, в противном случае - по умолчанию 0. В .submit {}, проверьте значение счетчика и прекратите подачу до того, как он получит к цели action = "", основанной на том, что было сделано ранее. – Ortund