Я хочу прикрепить прослушиватель событий к каждой форме на моем сайте, чтобы при отправке формы появлялось окно подтверждения, спрашивающее, уверен ли пользователь, что он хочет продолжить.Если пользователь не уверен, я не хочу, чтобы форма запускалась.
Пока у меня есть этот код:
window.onload = function() {
for(var i=0; i<document.forms.length; i++){
document.forms[i].addEventListener("submit",formSubmit,false);
}
}
function formSubmit(e) {
if (confirm("Are you sure?")) {
return true;
}
return false;
}
Примечания:
- Я не могу использовать jQuery
- Я не могу использовать функцию типа onDOMReady, потому что iframes, возможно, еще не загружены - поэтому
window.onload
мой единственный вариант (я думаю?) - Этокод не работает, потому что, когда "Вы уверены?"Когда я отправляю форму, всплывающее окно подтверждения появляется, какую бы кнопку я ни нажимал, форма все равно отправляется.
- Этот код также не работает, поскольку он не принимает формы внутри фреймов.Мне нужно не только перехватывать формы внутри iframe, но и формы внутри iframes, которые находятся внутри iframes ...
Я пробовал это:
var frame = document.getElementById("frameID").contentDocument;
for(var i=0; i<frame.forms.length; i++){
frame.forms[i].addEventListener("submit",formSubmit,false);
}
Ноон работает только для первого фрейма и, кажется, не работает, если я попал на страницу через кнопку «Назад».Это как-то связано с тем, как wondow.onload
работает?
Спасибо за вашу помощь заранее!
Обновление
Из ответа, данного@Jan Pfeifer У меня есть следующий код, который решает проблему отправки формы, даже когда вы выбираете «Отмена», но он не добавляет слушателя к каждой форме в каждом кадре должным образом.Я начинаю вознаграждение за это - кто-нибудь может заставить его работать на вложенные фреймы в каждом браузере?
function attach(wnd,handler){
for(var i=0; i<wnd.document.forms.length; i++){
var form = wnd.document.forms[i];
form.addEventListener('submit',handler,false);
}
for(var i=0; i<wnd.frames.length; i++){
var iwnd = wnd.frames[i];
attach(iwnd,handler);
}
}
function formSubmit(e){
if(!confirm('Are you sure?')) {
e.returnValue = false;
if(e.preventDefault) e.preventDefault();
return false;
}
return true;
}
window.addEventListener('load',function(){attach(window,formSubmit);},false);