Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Форма не отправляется по нажатию на Enter
 
 автор: daornet   (11.12.2010 в 01:11)   письмо автору
 
 

Подскажите почему форма не отправляется по нажатию на enter http://osbygoogle.ru/login.php . Спасибо

  Ответить  
 
 автор: TavRoX   (11.12.2010 в 01:31)   письмо автору
 
   для: daornet   (11.12.2010 в 01:11)
 

я точно не знаю, погляди там есть такая вещь как name=" "
оно должно быть в форме и в инпуте кнопки одинаковым
хз может я не прав, но пока ждешь ответа погляди

  Ответить  
 
 автор: daornet   (11.12.2010 в 01:48)   письмо автору
 
   для: TavRoX   (11.12.2010 в 01:31)
 

нет, не помогло

  Ответить  
 
 автор: АЯ   (11.12.2010 в 01:50)   письмо автору
 
   для: daornet   (11.12.2010 в 01:11)
 

Форма отправляется по нажатию на ENTER автоматически только в одном единственном случае - если в форме имеется только ОДНО текстовое поле типа text. В документации об этом написано так: "If the form includes only one text box and the user presses ENTER, the onsubmit event fires."

У Вас же полей, во-первых, ДВА, а не одно. Этого, в принципе, уже достаточно, чтобы АВТОсабмит не происходил.
Ну и, во-вторых, второе поле не текстовое, а типа password.
-----

Поэтому Вам следует делать принудительную отправку - сиречь вешать на тег <FORM> обработчик на событие onkeypress, в котором проверять код нажатой клавиши и, если это код клавиши ENTER, то давать команду на сабмит формы.

  Ответить  
 
 автор: daornet   (11.12.2010 в 02:20)   письмо автору
 
   для: АЯ   (11.12.2010 в 01:50)
 

А не могли бы вы подсказать эту команду?

  Ответить  
 
 автор: АЯ   (11.12.2010 в 05:36)   письмо автору
 
   для: daornet   (11.12.2010 в 02:20)
 

<form onkeypress="if (event.keyCode == 13) this.submit ()">

И никаких return false НЕ НАДО.

  Ответить  
 
 автор: daornet   (11.12.2010 в 12:20)   письмо автору
 
   для: АЯ   (11.12.2010 в 05:36)
 

Спасибо.

  Ответить  
 
 автор: mihdan   (13.12.2010 в 01:37)   письмо автору
 
   для: daornet   (11.12.2010 в 01:11)
 

Данная проблема встречается в некоторых браузерах некоторых версий, если в форме отсутствует кнопка отправки формы (пускай даже и скрытая):

<input type="submit" style="display: none;">

  Ответить  
 
 автор: АЯ   (13.12.2010 в 14:01)   письмо автору
 
   для: mihdan   (13.12.2010 в 01:37)
 

>"Данная проблема встречается в некоторых браузерах некоторых версий..."

Нет, данная проблема связана только и исключительно с количеством полей в форме.
Если полей более одного, то форма по нажатию ENTER не сабмитится.
О чём я выше и написал.
И это - не проблема, так было задумано разработчиками.

Можете проверить в любой версии любого браузера:
<form action="http://google.com" style="background: lime; padding: 20px">
Жми ENTER - просабмитится!<br>
<input>
</form>

<p>

<form action="http://yandex.ru" style="background: aqua; padding: 20px">
ENTER можешь не нажимать - сабмита не будет!<br>
<input><br>
<input>
</form>

-----
Та проблема, о которой Вы написали, она - несколько другая.
Но Вы её немного неверно сформулировали.

Событие onsubmit в теге <FORM> - оно срабатывает только тогда, когда будет нажата кнопка <input type="submit"> (или реально юзером, или через скрипт, имитирующий клик).
Если же форму просабмитить через скрипт (методом form.submit ()), то событие onsubmit не срабатывает.
Отсюда, если Вам надо заставить работать событие onsubmit, то Вам просто необходимо иметь внутри формы кнопку <input type="submit"> (или <input type="image">), по которой надо кликнуть (или - юзер, или - программно. В последнем случае эту кнопку можно делать "скрытной" - но не посредством display: none, а через visibility: hidden).

И "проблема" эта - она во всех браузерах всех версий.
Вернее - это тоже никак не проблема, а просто так было задумано разработчиками.
В документации так и указано - "The submit method does not invoke the onsubmit event handler."

  Ответить  
 
 автор: mihdan   (14.12.2010 в 00:24)   письмо автору
 
   для: АЯ   (13.12.2010 в 14:01)
 

Благодарствую за развернутый ответ.

  Ответить  
 
 автор: yuk   (14.12.2010 в 23:49)   письмо автору
 
   для: АЯ   (13.12.2010 в 14:01)
 

>>В последнем случае эту кнопку можно делать "скрытной" - но не посредством display: none, а через visibility: hidden

Возможно, стоит добавить, что это не сработает в IE (по крайней мере, в 7-м.)

  Ответить  
 
 автор: АЯ   (15.12.2010 в 01:53)   письмо автору
 
   для: yuk   (14.12.2010 в 23:49)
 

yuk, полагаю, не стоит этого добавлять, потому как срабатывает это и в 7-ой версии MSIE, и в более ранних, вплоть до 4-й:
<form id="frm" onsubmit="alert ('Hooray! It works!')">
<input name="field" size="100" value="Code for MSIE only">
<input type="submit" id="sbmt" style="visibility: hidden">
</form>

<hr>

<u onclick="document.all ('sbmt').click ()" style="cursor: hand">Имитируем клик по невидимой кнопке и видим алерт перед сабмитом - onsubmit сработал</u>

<p>

<u onclick="document.all ('frm').submit ()" style="cursor: hand">На всякий-який, убеждаемся, что "проблема" есть: сабмит будет, но
onsubmit не сработает - алерта без клика по кнопке не будет</u>

  Ответить  
 
 автор: yuk   (15.12.2010 в 09:28)   письмо автору
 
   для: АЯ   (15.12.2010 в 01:53)
 

Да, действительно, работает. Но если добавить еще одно текстовое поле - не работает (IE7)

<form id="frm" onsubmit="alert ('Hooray! It works!')">
<input name="field" size="100" value="Code for MSIE only">
<input name="field2" size="100" value="Code for MSIE only">
<input type="submit" id="sbmt" style="visibility: hidden">
</form>

  Ответить  
 
 автор: АЯ   (15.12.2010 в 11:16)   письмо автору
 
   для: yuk   (15.12.2010 в 09:28)
 

Даже и не знаю... стоит ли спрашивать... а то вдруг обижу?

А что именно у Вас в этом случае (с двумя полями) не работает?
Неужели Вы проверяли сабмит по нажатию на ENTER?

  Ответить  
 
 автор: yuk   (15.12.2010 в 17:33)   письмо автору
 
   для: АЯ   (15.12.2010 в 11:16)
 

Прошу прощения, был не достаточно внимателен при прочтении предыдущих постов.
Спасибо за уделенное внимание, потраченное время.

>>Неужели Вы проверяли сабмит по нажатию на ENTER?
Да, именно это я и проверял.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования