| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Поменять значение "на лету" в форме |
| Автор: V0fka 9.6.2013, 20:40 | ||
| Привет! Есть такая форма:
Я хочу, чтобы перед отправкой данных обработчику, в форме устанавливалось значение элемента "status", в зависимости от нажатой кнопки и чтобы потом в обработчике формы словить это значение как $_POST['status'] и что-то с ним делать. Но что-то эффекта никакого. Подскажите, пожалуйста, как это сделать? |
| Автор: Arantir 9.6.2013, 21:04 | ||
| Значение submit тоже передается при отправке, ведь это тоже input. Чтобы определить кнопку, не обязательно прикручивать Javascript, достаточно проверить, какое из значений передалось в скрипт:
|
| Автор: V0fka 10.6.2013, 16:44 |
| Arantir, спасибо за ответ, но меня все же интересует как сделать именно так, как я описал в первом посте |
| Автор: ksnk 10.6.2013, 17:30 |
| V0fka, У input с именем status нет имени, поэтому никакого значения на сервер не передается. |
| Автор: Arantir 10.6.2013, 17:43 | ||
V0fka, так же, как делается в других случаях взаимодействия пользователя с элементами — с помощью событий.
Вызывается при каждой попытке отправить форму (нажатие на submit, клавиша Enter при вводе в поле, вызов submit() из JS...). Функция выполняется перед отправкой данных. То есть, все изменения полей формы будут учтены. Если она вернет false, то отправка будет отменена (полезно, например, для проверки корректности данных). |
| Автор: Amphiluke 10.6.2013, 19:41 |
| @V0fka Вы обратили внимание, что объявленная вами функция submit не вызывается совсем? ) Дело в том, что в обработчики событий на элементах форм содержат в цепи областей видимости еще дополнительные объекты, имеющие отношение к самой форме. Так, известно, что объекты формы (HTMLFormElement) наследуют из своего прототипа нативный метод под названием submit, который занимается программной отправкой формы. Когда вы из обработчика события click на кнопке вызываете функцию submit, осуществляется просмотр цепи областей видимости в поисках этой функции. В порядке просматриваемых объектов область видимости объекта формы стоит ближе, чем глобальная область видимости, поэтому нативный метод submit находится раньше, чем ваша функция, и поиск прекращается. На самом деле, эту особенность в далеком 2008 упоминал еще Дмитрий Сошников, см. http://javascript.ru/forum/misc/5329-malenkijj-test-konflik-imjon.html. Желательно вообще не называть элементы форм и глобальные функции именами, совпадающими с названиями нативных методов типа submit и т.д., дабы избежать впоследствии вот таких неочевидных багов. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51b4be706ccc197359000002#findElement_E7045_51b601bf6ccc19a52100147c_0 |
| Автор: V0fka 11.6.2013, 20:45 |
| Друзья, спасибо за ответы! Я на досуге покручу все это, с учетом того, что вы мне подсказали и отпишу. |