Функция submit() содержит изъян!!!
Заметил что при стандартном использовании формы без скриптов, если у сабмита указано имя, в запросе отправляется имя сабмита как переменной и значение value, т.е. как и любой другой элемент формы с именем.
Однако, при использовании функции submit() переменную с именем сабмита не отправляет. Хотелось бы узнать есть ли способ отправить форму и с этой переменной, естественно с помощью скрипта и не используя click(), требуется это в общем-то для обхода проверки onclick. :victory: |
Здесь нет изъяна, так задумано. При нажатии на кнопку отправляется её имя/значение. В форме может быть несколько кнопок submit, тогда при нажатии одной из них отправляется имя/значение нажатой, на сервере можно понять, какую кнопку нажали.
А при вызове submit() никакая кнопка не нажимается. |
Цитата:
Если на форме несколько кнопок сабмита, то отправятся данные соответствующие нажатой. А вот, если вы засабмитите просто форму, нажав Enter в поле ввода, то никаких данных о кнопке сабмита послано не будет, потому что вы не нажали ни одну из них. Так, что логично, что когда в JS вы вызываете submit() у формы, то и посылаются данные как-будто вы засабмитили только форму. Для того чтобы засабмитить вместе с кнопкой, надо инициировать ее нажатие, либо сделать фейковое hidden-поле с данными нужной вам кнопки Submit |
Это я уже понял.)
Дело в том что click() использовать нельзя. Цитата:
|
Ребята, привет! Задам вопрос здесь, дабы не плодить темы.
Вообщем - есть форма, есть поле ввода, есть кнопка-сабмит, хочу сделать сообщение валидации при незаполненном поле по нажатию на кнопку, а именно есть блок с рисунком, у которого по умолчанию в цсс задан параметр visibility: hidden, по нажатию на кнопку вызывается обработчик события формы onsmubmit="validate();" В теле функции validate() содержится условие if (...forma.text.value="") ....style.visibility="visible"; Так вот проблема заключается в том, что при нажатии на кнопку сабмита блок показывается на долю секунды (полагаю, что на время срабатывания onclick) - это корректно? З.Ы. Я думал, что блок при задании такого условия должен отображаться все время, пока я не напечатаю что-нибудь в поле. |
Grego, скорее всего, у тебя происходит переход на другую страницу. Если у тебя ничего на прописано в атрибуте action тега form, тогда переход осуществляется на ту же страницу. То есть для тебя это выглядит, как появление предупреждения и исчезновение, а на самом деле страница просто перезагрузилась.
Если ты пишешь в теге формы onsubmit, то надо писать onsubmit = "return validate();". И если у тебя форма не прошла валидацию, то последней строчкой функции выдавать return false; тогда процесс будет останавливаться. То есть это как по клике на ссылку, чтобы браузер никуда не переходил, надо писать <a href="#" onclick="myFunc(); return false;">Link</a> |
Часовой пояс GMT +3, время: 03:18. |