Эмуляция нажатия кнопки при Entere в поле

dimasss

Новичок
Эмуляция нажатия кнопки при Entere в поле

Имеется форма, в которой расположены поля для ввода (input) в так называемых заголовочной и табличной частях. Также есть 3 кнопки: "Добавить строку"(submit) в табличную часть, "Оформить заказ"(submit) и "Очистить". При нажатии Enter'а в любом поле ввода происходит добавление новой строки в табличную часть, т.е. эмулируется нажатие кнопки "Добавить строку". То же самое происходит при рефреше страницы после того, как один раз действительно нажать "Добавить строку". Как этого избежать?
 

McSimm

Новичок
То же самое происходит при рефреше страницы после того, как один раз действительно нажать "Добавить строку". Как этого избежать?
Использовать редирект после метода post, не выводить контент после метода post
 

HeavyNatas

Новичок
Только я долго читал и соображал, каким образом название топика указывает на решение проблемы....
 

Фанат

oncle terrible
Команда форума
для тех, кто не умеет читать:
проблемы в вопросе ДВЕ.
одна из которых не имеет отношения к пхп, а имеет отношение к хтмл.

McSimm ответил только про вторую.
про неё же написано
здесь: http://phpfaq.ru/na_tanke#http
и здесь: http://phpclub.ru/faq/ProblemsLocations

первая же проблема звучит так "как сделать, чтобы по нажанию на ентер форма не отправлялась."
 

dimasss

Новичок
Фанат

огромное спасибо, вторая проблема решена.
а как решить первую (чтобы по нажанию на ентер в поле форма не отправлялась) ???
 

Фанат

oncle terrible
Команда форума
Лично я не силён в хтмл.
но думаю, кто-нибудь подскажет, как убрать фокус с кнопки "послать"
 

dimasss

Новичок
Фанат

на самом деле дело не в фокусе, т.к. если Tab'ом поставить фокус на кнопку "Оформить заказ" (которая тоже имеет тип submit), то при нажатии Enter'а на поле все равно происходит дейстие "Добавить строку".

P.S. "Добавить строку" стоит на форме выше "Оформить заказ".
 

McSimm

Новичок
проблема не столько в фокусе, сколько в поведении формы "по умолчанию".
если фокус находится в input text, нажатие enter приводит к submit, даже если нет submit-кнопок вообще.

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

McSimm

Новичок
Фанат
возможно.
я всего лишь предложил способ, который сам знаю.
как сделать без JS лично я не знаю.
 

dimasss

Новичок
HeavyNatas

фокус, как я сказал выше, не причем

McSimm оказался прав.
Вышел из ситуации следующим образом:
кноку "Добавить строку" сделал не submit'ом, а button'ом, и добавил onClick="self.location.href='new.php?action=add_line'"
 

HeavyNatas

Новичок
ну при нажатии на enter сабмит произойдет по-любому, если только не вмешаться в onsubmit формы или не навешать обработчиков на контролы
 

Фанат

oncle terrible
Команда форума
ХАХАХАХАХА
я понял.
проблема-то была не в хтмл.
а в кривом скрипте, который не проверял, какая кнопка была нажата =))))
 

dimasss

Новичок
HeavyNatas

кстати "вмешаться в onsubmit" - тоже выход
не в курсе как в onsubmit отследить с какого элемента формы он вызван?

-~{}~ 16.05.06 16:53:

Фанат

какая кнопка нажата у меня как раз проверяется!
 
Сверху