Html form две кнопки

Две кнопки отправки в одной форме

Также убедитесь, что название кнопки имеет правильное имя! Например «кнопка-1» не будет работать. Может спасти кого-то много хлопот, так что имейте это в виду.

Обычно все входные данные в форме отправляются вместе с формой. Поскольку значение кнопки передается только при нажатии, вам придется искать значения формы для этих предварительно определенных имен. Я думаю, что другой ответ ( stackoverflow.com/a/21778226/88409 ), который включает в себя присвоение им одного и того же имени с разными значениями, имеет больше смысла. Затем вы просто берете значение под одним известным именем поля формы. Это также делает более очевидным, что для данного имени входа будет отправлено только одно значение (выбранное), очень похожее на то, как работают переключатели (одно и то же имя, разные значения).

@Triynko, как сказал Робин Грин в комментариях к этому ответу, этот лучше для интернационализации. Например, если страница отображается на испанском языке, текст кнопок, скорее всего, будет другим. Таким образом, логика вашего кода зависит от того, какой текст этой кнопки сломается в этом случае. Переход по имени более безопасен, так как это значение, которое не отображается пользователю и поэтому может рассматриваться скорее как «частная» переменная, а не как сообщение для пользователей.

Вы можете дать каждому входу другое значение и сохранить одно и то же имя:

Затем в коде проверьте, что было вызвано:

if ($_POST['action'] == 'Update') < //action for update here >else if ($_POST['action'] == 'Delete') < //action for delete >else < //invalid action! >

Единственная проблема заключается в том, что вы привязываете свою логику к тексту внутри ввода. Вы также можете дать каждому уникальное имя и просто проверить $_POST за существование этого ввода:

if (isset($_POST['update_button'])) < //update action >else if (isset($_POST['delete_button'])) < //delete action >else < //no button pressed >

@LaszloPapp, как говорит сам ответ, если вы используете выбранный ответ выше, вы можете интернационализировать форму (т.е. перевести на разные языки или диалекты), не затрагивая логику. Если вы используете первую опцию в этом ответе, логика зависит от языка, на котором фактически представлена форма.

Читайте также:  Sorted hashset in java

@victoroux Просто сказать «это намного лучше» — довольно ужасная аргументация, вы помните, почему вы думали, что это решение будет лучшим в вашей ситуации? Поскольку использование отображаемого значения в качестве уникального идентификатора в коде обычно не выполняется, как только кто-то решит, что кнопке нужен другой текст, или когда вам нужно реализовать второй язык, ваш код внезапно перестанет работать (в противном случае вы могли бы даже сказать, что css-классы не необходимо, так как вы можете выбрать на основе текста абзаца / кнопки xD). Поэтому мне кажется, что и ответ Грега, и Кирилла выжили бы намного лучше в такой ситуации.

@T_D На это ответили в ’09, и я написал 4 года назад. Причина, по которой он все еще работает лучше, заключается именно в тех же аргументах, что и вы. Задний конец и передний конец разделены. Если визуальный дизайнер выбирает изменить слово, пока имя кнопки остается в покое, код на заднем конце продолжит работать. И эта версия, и Грег / Крилл страдают от проблемы обновления кода, которую вы обрисовали, это присуще всем обновлениям языка. Кроме того, 463 голоса резко контрастируют с 177. Этот ответ лучше объясняется и показывает два пути, предоставляя «превосходную» альтернативу.

Есть ли у нас в html какая-то конструкция, которая идентифицирует, по какой ссылке нажимают? Или нам нужно добавить обработчик onClick (будет ли он работать?) Специально в $ (‘form’). AjaxForm (

Чтобы решить проблему «В JavaScript / jQuery, как мы можем получить выбранную кнопку отправки?» (как упомянуто @aandis), я добавил return false; отправьте форму и примените процедуру AJAX по нажатию кнопки. Это позволяет нам использовать $(this).val(); чтобы получить значение.

Читайте также:  Html disable all buttons

Еще лучшее решение состоит из использования тегов кнопок для отправки формы:

Таким образом, нет неудобств при интернационализации и нескольких языках отображения (в первом решении метка кнопки также является значением, отправленным на сервер).

Видимо поведение браузера отличается; некоторые передают атрибут value, другие — строку между тегами . Так что будьте осторожны с этим.

Я думаю, что предоставленный фрагмент полностью поддерживается ( w3schools.com/tags/att_button_type.asp )

@kiril фрагмент этой ссылки использует два различных типа

Хорошо, ты прав. Затем я проверил рабочий проект HTML5 W3C. Цитирование: >> Атрибут value дает значение элемента для целей отправки формы. Значение элемента — это значение атрибута значения элемента, если он есть, или пустая строка в противном случае. >> ПРИМЕЧАНИЕ. Кнопка (и ее значение) включается в отправку формы только в том случае, если сама кнопка была использована для инициирования отправки формы.

@Jeroen Bull. Какие браузеры отправляют текст между тегами? Вход или кнопка должны только когда-либо отправлять атрибут «значение». Кнопка может буквально иметь между тегами что угодно, включая изображения или другие теги HTML. В этом весь смысл использования кнопки над элементом ввода, и вы пытаетесь предположить, что браузер собирается сбросить весь этот контент в качестве значения? Ни за что.

Я пытаюсь использовать этот ответ, но когда я сбрасываю свой $ _POST, он показывает только другие данные в форме, почему это?

Источник

Множественные submit для формы

С приходом HTML5 формы сталее более универсальными. Элемент input теперь может содержать электронные адреса, даты и много другое, их можно отмечать как обязательные не прибегая к javascript – и это всего лишь некоторые из наиболее ценных возможностей. Также теперь для одной формы можно задействовать несколько submit кнопок, а также теперь есть возможность вынести кнопку submit за пределы формы.

Читайте также:  Java exiting a method

Несколько submit внутри одной формы

До недавнего времени в форму можно было вставить только одну кнопку submit, в противном случае форма обрабатывала только последнюю кнопку. Добавляя method=»post» и url к элементу формы «form» мы получали рабочую форму.

Теперь ситуация изменилась – в HTML добавили новые свойства «formmethod» и «formaction». Они позволяют добавить метод post и url непосредственно в кнопку «submit», таким образом к form ничего дописывать не нужно. Имея эти параметры, прикрепленные к кнопке «submit», а не к form – все это добавляет больше гибкости форме. Теперь можно сделать столько кнопок, сколько будет необходимо для формы.

Теперь каждая кнопка «submit» относится к разным url и все это избавляет от того, что при верстке необходимо писать javascript код. Все это отлично работает и теперь по нажатии на какую-нибудь кнопку форма получит formmethod и formaction, которые перезапишут стандартные параметры method и action. Если в форме будет присутствовать обычная кнопка «submit» без новых параметров, то он вернет форме значения, установленные для элемента form.

Свойства formmethod и formaction поддерживаются всеми популярными браузерами

Элементы формы (input, select, textarea) за пределами формы

Общепринятый факт, что все элементы формы, принадлежащие ей должны находится внутри элемента . Это уменьшает гибкость при разработке дизайна самих форм. Благодаря новому атрибуту «form» теперь любой элемент можно вынести за пределы формы и разместь любой элемент формы в любой части страницы. Для этого всего лишь необходимо форме добавить идентификатор ID и затем значение этого идентификатора добавить ко всем элементам в качестве аттрибута.

На сегодняшний день аттрибут form поддерживается всеми популярными браузерами, за исключением Internet Explorer (вплоть до 10й версии).

Источник

Оцените статью