Есть ли способ идентифицировать формы, если использовать элемент кнопки для отправки? - PullRequest
2 голосов
/ 02 марта 2010

Я начал использовать элемент кнопки для отправки моих форм

<button type="submit">Send</button>

Я знаю, что если бы я использовал такой элемент ввода, я мог бы легко определить в PHP, какая форма была отправлена ​​(прочитав значение $_POST['form'] в примере ниже).

<input type="submit" value="Send" name="form" value="contact" />

Есть ли способ сделать это с помощью элемента кнопки? Там будет один элемент кнопки на форму. Я знаю, что IE6 имеет проблемы с несколькими элементами кнопки в одной форме, и IE7 отправляет innerHTML вместо значения.

Будет ли это надежным?

HTML

<button type="submit" name="form-contact" value="true">Send</button>

PHP

if (isset($_POST['form-contact'])) {
    // Contact Form submitted
}

Большое спасибо

Ответы [ 3 ]

4 голосов
/ 02 марта 2010

Это не прямой ответ на ваш вопрос, но вы всегда можете использовать скрытые данные для различения форм:

<form>
<input type="hidden" name="form-name" value="form-1" />
</form>

Другая форма:

<form>
<input type="hidden" name="form-name" value="form-2" />
</form>
2 голосов
/ 02 марта 2010

Если сценарий, который обрабатывает форму, должен различать разные формы, вы должны использовать скрытый ввод, потому что это надежный кросс-браузер. Проверка имени / значения кнопки отправки не очень надежна, поскольку некоторые браузеры просто не отправляют пару имя / значение кнопки отправки, если пользователь отправляет форму с помощью клавиши ввода, в то время как другой элемент формы находится в фокусе. Процессоры форм, которые терпят неудачу в этом общем сценарии, действительно хромают. Кнопка, тип ввода = кнопка и тип ввода = изображение - все они несовместимы между браузерами.

На самом деле вам даже редко требуется скрытый ввод. Вы можете просто использовать разные входные имена для разных форм. например, name = contact_email, name = order_email и т. д., а затем просто проверьте, какой из них существует, чтобы определить идентичность формы. Но это становится более сложным, и я лично не чувствую, что стоит дополнительных усилий, когда вы можете просто поместить скрытый ввод туда.

0 голосов
/ 02 марта 2010

вы можете использовать AJAX для отправки form_name, соответствующего нажатой кнопке, просто вставьте имя формы вдоль URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...