Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: отлов onsubmit при отправке формы скриптом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DelphinPRO
Отправлено: 11 Сентября, 2012 - 12:02:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




есть форма

CODE (html):
скопировать код в буфер обмена
  1. <form action="#" name="form1">
  2.   <input type="text" required>
  3.   <input type="text" required>
  4. </form>
  5.  
  6. // За пределами формы кнопка
  7. <input type="submit" onclick="document.forms.form1.submit()">


на все формы навешен обработчик для валидации

CODE (javascript):
скопировать код в буфер обмена
  1. $('form').submit(function(){
  2.   // тут код валидации
  3.   return success;
  4. });


Внимание, вопрос!

В таком виде нифига не срабатывает обработчик. Если кнопка находится внутри тега <form> и у нее нет onclick, то обработчик срабатывает.
Как сделать чтобы при отправке формы с помощью кострукции
onclick="document.forms.form1.submit()
срабатывал обработчик submit ?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
EuGen Администратор
Отправлено: 11 Сентября, 2012 - 12:21:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Никак. Это разные вещи. onSubmit - это обработчик события. И события именно того, что пользователь нажал submit формы. При вызове submit() напрямую этого события не происходит (ведь и на самом деле).
Хорошая цитата здесь:
http://xpoint[dot]ru/forums/programm[dot][dot][dot]read/39921[dot]xhtml
Цитата:
Едете Вы по дороге, тут вдруг бах, "красный свет" (onSubmit), событие однако ! Ну вы его обрабатываете естественно - давите на тормоз (form.submit()), едете дальше, а тут опа, бобик выскакивает, Вы опять по тормозам, но красный свет почемуто не появляется. А почему ?

Как поправить - мыслите как работает браузер, он работает так как ему надо а не так как Вам. onSubmit - событие, form.submit() - всего лишь его низкоуровневый обработчик, используемый самим браузером, и доступный программисту по необходимости. С чего бы ему инициировать это событие ? Так и зациклиться недалеко. Одно дело задумать действие, другое - его выполнить. Задумка/мысль/событие и метод обработчик/педаль/инструмент - разные вещи. Ненадо вешать обработчик на метод, это бред. В простейшем случае вызывайте функцию обработчик перед вызовом form.submit().


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
AlexAnder
Отправлено: 11 Сентября, 2012 - 12:26:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. <form onsubmit="return myfunc()">
  2. <input type="text" id="txt" />
  3. <input type="submit" value="test" />
  4. </form>
  5. <script>
  6. function myfunc(){
  7.   if(document.getElementById('txt').value != ''){
  8.     alert('Всё ОК, валидация успешна');
  9.     return true;
  10.   }else{
  11.     alert('Форма не прошла валидацию, данные не отправляются на обработчик!');
  12.     return false;
  13.   }
  14. }
  15. </script>


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DelphinPRO
Отправлено: 11 Сентября, 2012 - 12:32:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




EuGen, благодарю, понял.
событие и действие, разные вещи.

В следующих проектах проанализирую этот вопрос подробно.
Сейчас на помощь пришел jQuery Улыбка

CODE (html):
скопировать код в буфер обмена
  1. <input type="button" onclick="$('#form1').submit()"/>


Он сам вызывает все обработчики.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB