Вы можете использовать событие submit
, чтобы отменить отправку формы, выполнить анализ с помощью ajax, а затем отправить форму программным способом, используя метод submit
для элемента form
.
Например,( живая копия ):
HTML:
<form id="theForm" action="#" method="GET">
<label>Field: <input type="text" name="theField"></label>
<br><input type="submit" value="Submit">
</form>
JavaScript:
window.onload = function() {
var form, counter;
form = document.getElementById("theForm");
form.onsubmit = function() {
if (typeof counter === "undefined") {
display("Starting count down (" + counter + ")");
counter = 3;
setTimeout(delayedSubmit, 1000);
}
display("Cancelling form submit");
return false;
};
function delayedSubmit() {
if (typeof counter === "number") {
--counter;
if (counter > 0) {
display("Continuing count down (" + counter + ")");
setTimeout(delayedSubmit, 1000);
}
else {
display("Count down complete, submitting form");
counter = undefined;
form.submit();
}
}
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = msg;
document.body.appendChild(p);
}
};
Там я использовал таймер обратного отсчета, а неоперация ajax, но принцип тот же.
Не по теме : я использовал старый стиль DOM0 для установки там обработчика событий (form.onsubmit = ...
),Я не рекомендую это, но это держит пример простым.Настройка обработчиков событий является одним из мест, где библиотека, такая как jQuery , Прототип , YUI , Закрытие или любаяиз нескольких других может сгладить различия между браузерами (и предоставить дополнительную функциональность) для вас, стоит подумать об их использовании.