Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2010, 20:38
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

onsubmit не перехватывается
применяю на форму addEventListener
с событием submit
а событие не ловится

событие вызывается другим скриптом
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2010, 21:37
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

телепатов нет
Ответить с цитированием
  #3 (permalink)  
Старый 17.06.2010, 21:38
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

то что телепатов нет я знаю
форма отправляется, а событие не перехватывается
как быть
сайт 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);

Последний раз редактировалось KOLANICH, 17.06.2010 в 21:46.
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2010, 21:41
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

Сообщение от KOLANICH
обытие вызывается другим скриптом
как?
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2010, 10:47
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

просто
form.submit();
нет какой-то другого способа отправить форму через джаваскрипт, не извращаясь?

Последний раз редактировалось KOLANICH, 18.06.2010 в 11:44.
Ответить с цитированием
  #6 (permalink)  
Старый 27.07.2010, 20:40
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

То есть, 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 не срабатывает (как для отправки формы) .
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2010, 19:11
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

1 у меня файрфокс, так чё майкрософт тут ни при чём
2 проблема не в этом
сайт не мой
форма вообще не отправляется по энтеру
форма отправляется по кнопке
при нажатии на кнопку происходят их проверки
после проверок форма либо отправляется, либо пишут про ошибку
мне надо поймать отправку формы в своём userscriptе и отреагировать на сам факт отправки
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2010, 20:46
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от KOLANICH Посмотреть сообщение
1 у меня файрфокс, так чё майкрософт тут ни при чём
2 форма отправляется по кнопке
...отреагировать на сам факт отправки
Вроде бы я понятно написал...
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>
Ответить с цитированием
  #9 (permalink)  
Старый 03.08.2010, 21:08
Аватар для KOLANICH
Профессор
Отправить личное сообщение для KOLANICH Посмотреть профиль Найти все сообщения от KOLANICH
 
Регистрация: 22.11.2008
Сообщений: 277

решаю проблему таким способом
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);

не работает
как превратить код функци в функцию
Ответить с цитированием
  #10 (permalink)  
Старый 04.08.2010, 00:28
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

Сообщение от KOLANICH
как превратить код функци в функцию
new Function же
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма запроса и приложение к тегу onSubmit() VeliaR Общие вопросы Javascript 3 02.07.2009 08:46
У элемента img внутри form пропадает событие после onsubmit формы Eugene Events/DOM/Window 2 18.06.2009 18:21