Использование нескольких кнопок отправки данных (submit) на одной форме
Когда на форме <form> расположено несколько кнопок отправки данных <input type="submit">, есть несколько вариантов, как определять, какая именно из кнопок самбита была нажата.
Самое первое, что пришло в голову - использовать Javascript + скрытый параметр формы:
<FORM NAME="f1" action="index2.php" method="post"> <input type="hidden" name="func"> <input type="text" name="name"> <INPUT TYPE="button" VALUE="Submit 1" onclick="document.f1.func.value='1'; document.f1.submit();"> <INPUT TYPE="button" VALUE="Submit 2" onclick="document.f1.func.value='2'; document.f1.submit();"> <INPUT TYPE="button" VALUE="Submit 3" onclick="document.f1.func.value='3'; document.f1.submit();"> </FORM>
Файл index2.php
, указанный здесь в качестве обработчика, покажет какая кнопка была нажата:
<?php echo $_REQUEST['func']; ?>
А что произойдёт при нажатии клавиши Enter, а не экранной кнопки для отправки формы? А вот неясно... у меня, например, ни в
Файрфоксе, ни в Опере, ни в Internet Explorer - вообще ничего, ну не станут браузеры передавать параметр без type="submit"
:)
На самом деле в HTML
можно делать и несколько кнопок с TYPE="submit"
, но тогда по умолчанию всегда работает первая по коду формы, в нашеми случае Submit 1.
Если эту первую надо показать
"не первой" (например, расположить правее второй) - можно просто выровнять стилями направо.
А может обойтись без стилей и яваскрипта? Подумал было так:
<FORM NAME="f1" action="index2.php" method="post"> <div style="display:none;"><input type="submit" name="default" value="Default"></div> <input type="text" name="name"> <INPUT TYPE="submit" name="Submit1" VALUE="Submit 1"> <INPUT TYPE="submit" name="Submit2" VALUE="Submit 2"> <INPUT TYPE="submit" name="Submit3" VALUE="Submit 3"> </FORM>
Теперь при нажатии Enter как бы нажимается невидимая кнопка Default
.
Вот такой index2.php
покажет, что передано:
<?php foreach ($_REQUEST as $k=>$v) print $k.'=>'.$v.'<br>'; ?>
Увы, в ИЕ просто ничего не передаётся, кроме текста из поля ввода, а в Хроме всё равно "нажимается" первая кнопка,
только в Опере и Фоксе всё нормально. Вывод - не мудрить, всегда ставить кнопку "действия по умолчанию" первой,
ставить сколько надо INPUT TYPE="submit"
да и всё :)
06.08.2012, 14:04 [15776 просмотров]