onsubmit не перехватывается
применяю на форму addEventListener
с событием submit а событие не ловится событие вызывается другим скриптом |
телепатов нет
|
то что телепатов нет я знаю
форма отправляется, а событие не перехватывается как быть сайт http://ptzplace.lockerzclub.info/april/black.php скрипт var time=new Date().getTime(); if(document.getElementById("shippingForm"))document.getElementById("shippingForm").addEventListener("submit",function(){ var today=new Date(); //alert(time); var dt=today.getTime()-time; alert("You have spent "+dt/1000+" seconds!!!"); },true); |
Цитата:
|
просто
form.submit(); нет какой-то другого способа отправить форму через джаваскрипт, не извращаясь? |
То есть, form.submit происходит, а событие onsubmit не перехватывается.
Правильно. И не будет перехватываться. Потому что оно вообще НЕ ВОЗНИКАЕТ. Microsoft (MSDN site) claims that the submit method of a form does not invoke the onsubmit event handler. http://www.w3.org/2001/12/DOM-Level-2-issues#i6 Другими словами, перед тем как делать form.submit() необходимо заранее сделать все необходимые проверки и прописать все переменные формы. Я так понял, что главная проблема на сайте http://ptzplace.lockerzclub.info/april/black.php - это то, что при нажатии на клавишу Enter форма отправляет данные БЕЗ Ваших проверок. Лично я отключаю это таким способом: form.onsubmit = function() {return false} // антиэнтэр и обычно делаю отправку формы по Ctrl-Enter, о особенно, если на форме присутствует textarea, в котором Enter не срабатывает (как для отправки формы) . |
1 у меня файрфокс, так чё майкрософт тут ни при чём
2 проблема не в этом сайт не мой форма вообще не отправляется по энтеру форма отправляется по кнопке при нажатии на кнопку происходят их проверки после проверок форма либо отправляется, либо пишут про ошибку мне надо поймать отправку формы в своём userscriptе и отреагировать на сам факт отправки |
Цитата:
Fire Fox тут ни причём. Я Вам ссылку не на майкрософт дал, а на спецификацию www.w3.org Поэтому в Fire Fox эффект будет тот же. Вот пример. По энтеру событие onsubmit возникает, а когда Вы производите отправку формы по кнопке, то делаете f.submit() - в этом случае onsubmit не возникает, поэтому нечего его и отлавливать. <script type="text/javascript"> function send() { // проверки ... document.forms.test.submit(); } function onsubmitfunction() { alert('передаю...') } </script> <form id="test" name="test" method="post" onsubmit=onsubmitfunction()> <input type="text" value="123"> <input type="button" value="send" onclick=send()> </form> |
решаю проблему таким способом
var sender=unsafeWindow["submitForm"].toSource().replace(/([\w-_]\.submit\(\)\;)/g,"var dt=new Date().getTime()-"+time+";alert(\"You have spent \"+dt/1000+\" seconds!!!\");$1"); console.log(sender); eval(sender); не работает как превратить код функци в функцию |
Цитата:
|
Часовой пояс GMT +3, время: 09:25. |