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