Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2011, 11:50
Интересующийся
Отправить личное сообщение для a1exei Посмотреть профиль Найти все сообщения от a1exei
 
Регистрация: 11.10.2011
Сообщений: 17

Функция submit() содержит изъян!!!
Заметил что при стандартном использовании формы без скриптов, если у сабмита указано имя, в запросе отправляется имя сабмита как переменной и значение value, т.е. как и любой другой элемент формы с именем.

Однако, при использовании функции submit() переменную с именем сабмита не отправляет. Хотелось бы узнать есть ли способ отправить форму и с этой переменной, естественно с помощью скрипта и не используя click(), требуется это в общем-то для обхода проверки onclick.
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2011, 12:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Здесь нет изъяна, так задумано. При нажатии на кнопку отправляется её имя/значение. В форме может быть несколько кнопок submit, тогда при нажатии одной из них отправляется имя/значение нажатой, на сервере можно понять, какую кнопку нажали.
А при вызове submit() никакая кнопка не нажимается.
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2011, 12:04
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

Сообщение от a1exei
Заметил что при стандартном использовании формы без скриптов, если у сабмита указано имя, в запросе отправляется имя сабмита как переменной и значение value, т.е. как и любой другой элемент формы с именем.
Да, ведь вы сабмитите форму через кнопку
Если на форме несколько кнопок сабмита, то отправятся данные соответствующие нажатой.

А вот, если вы засабмитите просто форму, нажав Enter в поле ввода, то никаких данных о кнопке сабмита послано не будет, потому что вы не нажали ни одну из них.

Так, что логично, что когда в JS вы вызываете submit() у формы, то и посылаются данные как-будто вы засабмитили только форму.
Для того чтобы засабмитить вместе с кнопкой, надо инициировать ее нажатие, либо сделать фейковое hidden-поле с данными нужной вам кнопки Submit
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2011, 13:06
Интересующийся
Отправить личное сообщение для a1exei Посмотреть профиль Найти все сообщения от a1exei
 
Регистрация: 11.10.2011
Сообщений: 17

Это я уже понял.)
Дело в том что click() использовать нельзя.

Цитата:
фейковое hidden-поле с данными нужной вам кнопки Submit
Я тоже думал об этом. Получается других способов нет. Ну ладно, пока сделаю так, спасибо за ответ.
Ответить с цитированием
  #5 (permalink)  
Старый 09.01.2012, 15:56
Интересующийся
Отправить личное сообщение для grego Посмотреть профиль Найти все сообщения от grego
 
Регистрация: 09.01.2012
Сообщений: 26

Ребята, привет! Задам вопрос здесь, дабы не плодить темы.

Вообщем - есть форма, есть поле ввода, есть кнопка-сабмит, хочу сделать сообщение валидации при незаполненном поле по нажатию на кнопку, а именно есть блок с рисунком, у которого по умолчанию в цсс задан параметр visibility: hidden, по нажатию на кнопку вызывается обработчик события формы onsmubmit="validate();"
В теле функции validate() содержится условие if (...forma.text.value="")
....style.visibility="visible";
Так вот проблема заключается в том, что при нажатии на кнопку сабмита блок показывается на долю секунды (полагаю, что на время срабатывания onclick) - это корректно?
З.Ы. Я думал, что блок при задании такого условия должен отображаться все время, пока я не напечатаю что-нибудь в поле.
Ответить с цитированием
  #6 (permalink)  
Старый 09.01.2012, 16:38
Интересующийся
Отправить личное сообщение для vandy3 Посмотреть профиль Найти все сообщения от vandy3
 
Регистрация: 28.10.2010
Сообщений: 14

Grego, скорее всего, у тебя происходит переход на другую страницу. Если у тебя ничего на прописано в атрибуте action тега form, тогда переход осуществляется на ту же страницу. То есть для тебя это выглядит, как появление предупреждения и исчезновение, а на самом деле страница просто перезагрузилась.

Если ты пишешь в теге формы onsubmit, то надо писать onsubmit = "return validate();". И если у тебя форма не прошла валидацию, то последней строчкой функции выдавать return false; тогда процесс будет останавливаться. То есть это как по клике на ссылку, чтобы браузер никуда не переходил, надо писать
<a href="#" onclick="myFunc(); return false;">Link</a>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 19:00
привязать событие к submit flyingspook Общие вопросы Javascript 12 19.08.2011 14:35
jQuery - объект или функция? jazzz13 jQuery 8 16.08.2011 04:01
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
submit в iframe по событию change vovasvv jQuery 1 21.05.2010 09:37