html несколько кнопок в форме

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

У меня есть две кнопки отправки в форме. Как определить, какая из них была поражена серверной стороной?

Если вы дадите каждому имя, то выбранное будет отправлено как любой другой ввод.

Решение 1:
присвойте каждому входу различное значение и сохраняйте то же имя:

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

Проблема в том, что вы связываете свою логику с видимым пользователем текстом на входе.

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

Существует новый подход HTML5 к этому, formaction атрибут:

Лично я обычно использую Javascript для удаленной отправки форм (для более быстрой обратной связи) с этим подходом в качестве резервного. Между двумя единственными людьми, которые не охвачены, являются IE тега.

Это очень легко проверить

Просто поместите это на HTML-страницу, нажмите кнопки и посмотрите на URL

Используйте formaction атрибут HTML (5-я строка):

Пример кода сервера (PHP):

elseif очень важно, потому что оба будут проанализированы, если нет. Наслаждаться.

Поскольку вы не указали, какой метод сценариев на стороне сервера вы используете, я приведу пример, который работает для Python, используя CherryPy (хотя это может быть полезно и для других контекстов):

Вместо того, чтобы использовать значение, чтобы определить, какая кнопка была нажата, вы можете использовать имя (с тегом вместо ). Таким образом, если ваши кнопки имеют одинаковый текст, это не вызовет проблем. Имена всех элементов формы, включая кнопки, отправляются как часть URL. В CherryPy каждый из них является аргументом для метода, который выполняет код на стороне сервера. Итак, если ваш метод имеет только **kwargs свой список параметров (вместо утомительного ввода каждого имени каждого элемента формы), вы можете проверить, какая кнопка была нажата следующим образом:

Источник

Несколько кнопок отправки в HTML-форме

предположим, вы создаете мастер в форме HTML. Одна кнопка идет назад, другая вперед. С назад кнопка появляется сначала в разметке при нажатии Enter он будет использовать эту кнопку для отправки формы.

что я хотел бы сделать, это решить, какая кнопка используется для отправки формы, когда пользователь нажимает Enter. Таким образом, при нажатии Enter мастер перейдет на следующую страницу, а не предыдущая. Вы должны использовать tabindex для этого?

23 ответов

надеюсь, это поможет. Я просто делаю трюк float ing кнопки справа.

таким образом, кнопка Prev слева от следующей кнопки, но следующая сначала в HTML-коде:

Edit: преимущества перед другими предложениями: нет JavaScript, доступны, обе кнопки остаются type=»submit»

было бы возможно для вас изменить предыдущий тип кнопки в кнопку, как это:

Теперь следующая кнопка будет по умолчанию, плюс вы может также добавить default атрибут к нему, так что ваш браузер будет выделять его так:

надеюсь, что это поможет.

дайте вашим кнопкам отправки такое же имя, как это:

когда пользователь нажимает enter и запрос идет на сервер, вы можете проверить значение для submitButton на вашем серверном коде, который содержит коллекцию form name/value пар. Например, в классическом ASP:

если тот факт, что первая кнопка используется по умолчанию, согласован между браузерами, почему бы не поместить их правильно в исходный код, а затем использовать CSS для переключения их видимых позиций? float их влево и вправо, чтобы переключать их визуально, например.

Если вы действительно хотите, чтобы он работал как диалоговое окно установки, как насчет того, чтобы просто сосредоточиться на кнопке «Далее» OnLoad. Таким образом, если пользователь нажимает Return, форма отправляется и идет вперед. Если они хотят вернуться, они могут нажать вкладку или нажать на кнопку.

Он может работать с CSS

поместите их в разметку в качестве следующей кнопки сначала, затем предыдущую кнопку Далее.

затем использовать CSS, чтобы расположить их так, как вы хотите

иногда предоставленного решения @palotasb недостаточно. Есть случаи использования, когда, например, кнопка «фильтр» отправки помещается над кнопками, такими как»следующий и предыдущий». Я нашел обходной путь для этого: скопировать кнопка отправки, которая должна действовать как кнопка отправки по умолчанию в скрытом div и поместить его в форму выше любой другой кнопки отправки. Технически он будет представлен другой кнопкой при нажатии Enter, а затем при нажатии на видимый следующий кнопка. Но поскольку имя и значение одинаковы, в результате нет никакой разницы.

Кевин, это невозможно сделать с помощью чистого HTML. Вы должны полагаться на JavaScript для этого трюка.

однако, если вы разместите две формы на странице HTML, вы можете это сделать.

Form1 будет иметь предыдущую кнопку.

Form2 будет иметь любые пользовательские входы + следующая кнопка.

когда пользователь нажимает Enter в Form2 будет срабатывать следующая кнопка отправки.

Я бы использовал Javascript для отправки формы. Функция будет вызвана событием OnKeyPress элемента формы и определит, был ли выбран ключ Enter. Если это так,он представит форму.

вот две страницы, которые дают методы о том, как это сделать:1, 2. Основываясь на них, вот пример использования (на основе здесь):

это работает без javascript или CSS в большинстве браузеров:

Firefox, Opera, Safari, Google Chrome все работают.
Как всегда, IE является проблемой.

эта версия работает, когда javascript включен:

таким образом, недостаток этого решения:
Предыдущая страница не работает, если вы используете IE с выключенным Javascript.
Имейте в виду, кнопка «назад» все еще работает!

Если у вас есть несколько активных кнопок на одной странице, то можно сделать что-то вроде этого:

отметьте первую кнопку, которую вы хотите триггеры на Enter нажатие клавиши как defaultbutton на форме. Для второй кнопки свяжите ее с Backspace на клавиатуре. Backspace eventcode составляет 8.

надеюсь, что это помогает.

изменить порядок должен быть все, что нужно для этого. Сохранить его простым.

другой простой вариант-поместить кнопку «назад» после кнопки «отправить» в HTML-коде, но переместите ее влево, чтобы она появилась на странице перед кнопкой «Отправить».

другой простой вариант-поместить кнопку «назад» после кнопки «отправить» в HTML-коде, но переместите ее влево, чтобы она появилась на странице перед кнопкой «Отправить».

изменить порядок должен быть все, что нужно для этого. Сохранить его простым.

это то, что я пробовал: 1. Вам нужно убедиться, что вы даете своим кнопкам разные имена 2. Напишите оператор if, который выполнит требуемое действие, если какая-либо кнопка нажата.

кнопка элемента формы по умолчанию-первая кнопка отправки в дереве порядок, владельцем формы которого является этот элемент формы.

если агент пользователя поддерживает разрешение пользователю отправлять форму неявно (например, на некоторых платформах нажатие клавиши «enter» во время текста поле фокусируется неявно, передает форму).

имеющая следующие input be type= «submit»и изменение предыдущего ввода на type=» button » должно дать желаемое поведение по умолчанию.

в первый раз, когда я столкнулся с этим, я придумал onclick()/JS hack, когда выбор не prev/next, который мне все еще нравится за его простоту. Он звучит так:

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

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

я столкнулся с этим вопросом, пытаясь найти ответ на в основном то же самое, только с asp.net элементы управления, когда я понял, что кнопка asp имеет свойство под названием UseSubmitBehavior это позволяет установить, какой из них делает отправку.

на всякий случай, если кто-то ищет asp.net кнопка способ сделать это.

С помощью javascript (здесь jQuery) вы можете отключить кнопку prev перед отправкой формы.

я решил очень похожую проблему следующим образом:

если javascript не включен, то форма подается в браузер с множеством кнопок. В этом случае наезд введите textfield в пределах формы будет отправить форму с первой кнопкой вместо предполагаемого по умолчанию, но, по крайней мере, форма по-прежнему может использоваться: вы можете отправить оба prev и далее кнопки.

можно использовать Tabindex чтобы решить эту проблему, также изменение порядка кнопки было бы более эффективным способом достижения этого. Измените порядок кнопки и добавьте float значения, чтобы назначить им нужную позицию, которую вы хотите показать в своем HTML вид.

используя приведенный вами пример:

Если вы нажмете «Предыдущая страница», будет отправлено только значение» prev». Если вы нажмете «Следующая страница», будет отправлено только значение» далее».

Если, однако, вы нажмете enter где-то в форме, ни «prev», ни «next» не будут отправлены.

таким образом, используя псевдо-код, вы можете сделать следующее:

Источник

Html несколько кнопок в форме

Несколько кнопок отправки в форме HTML

Присвойте кнопкам отправки одно и то же имя:

Когда пользователь нажимает Enter и запрос отправляется на сервер, вы можете проверить значение для submitButton в коде на стороне сервера, который содержит коллекцию пар name/value формы. Например, в ASP Classic :

Это не то, что спросил пользователь. Пользователь хотел знать, как контролировать, какая кнопка отправки в форме активируется при нажатии Enter, т.е. которая является кнопкой по умолчанию.

не работает в приложении I18n, где вы даже не знаете метку кнопки.

В каком системном или технологическом решении сам сервер не знает, что за метка использовалась для кнопки «Далее» и «Назад»? Разве сервер не сгенерировал кнопку «Вперед» и «Назад»? (Если локализация обрабатывается на стороне клиента, я думаю, что сервер может не знать, но я никогда не слышал об этом для HTML)

Измените предыдущий тип кнопки на кнопку, подобную этой:

При вводе типа «кнопка» действие формы не выполняется. Вы можете иметь onclick или что-то, таким образом выполняя другую функцию, чем действие формы по умолчанию (которое выполняется нажатием кнопки типа submit). Это то, что я искал, и поэтому я проголосовал за это. Не могу говорить за атрибут «default», это не было частью моей проблемы;) спасибо за ваше разъяснение.

Если тот факт, что первая кнопка используется по умолчанию, одинаков для всех браузеров, поместите их правильно в исходный код, а затем используйте CSS для переключения их видимых позиций.

float их влево и вправо, например, чтобы переключать их визуально.

Что произойдет, если JavaScript отключен?

Вы не должны использовать для комментирования JS, эти теги не являются токенами языка Javascript

@Marecky Они не должны комментировать JS. Они игнорируются при анализе содержимого

Для этого нужно изменить порядок вкладок. Сохраняйте это простым.

Кнопка элемента формы по умолчанию является первой кнопкой отправки в дереве порядок, владельцем формы которого является этот элемент формы.

Наличие следующего ввода будет type = «submit» и изменение предыдущего ввода на type = «button» должно дать желаемое поведение по умолчанию.

С помощью JavaScript (здесь jQuery) вы можете отключить кнопку prev перед отправкой формы.

В первый раз, когда я столкнулся с этим, я наткнулся на взлом onclick () / JavaScript, когда выбор не задан / следующий, который мне все еще нравится из-за его простоты. Это выглядит так:

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

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

Источник

Несколько кнопок отправки в форме HTML

Надеюсь, это поможет. Я просто делаю трюк float с кнопками справа.

Таким образом, Prev кнопка остается слева от Next кнопки, но Next в структуре HTML стоит первой:

Измените предыдущий тип кнопки на кнопку, подобную этой:

Теперь кнопка « Далее» будет использоваться по умолчанию, плюс вы также можете добавить default к ней атрибут, чтобы ваш браузер выделил его следующим образом:

Дайте вашим кнопкам отправки то же имя, как это

Если тот факт, что первая кнопка используется по умолчанию, одинаков для всех браузеров, поместите их правильно в исходный код, а затем используйте CSS для переключения их видимых позиций.

float например, влево и вправо, чтобы переключать их визуально.

Иногда предоставляемого решения @palotasb недостаточно. Есть случаи, когда, например, кнопка «Фильтр» отправляется над кнопками типа «Далее» и «Предыдущий». Я нашел обходной путь для этого: скопируйте кнопку отправки, которая должна выступать в качестве кнопки отправки по умолчанию в скрытом элементе div, и поместите ее внутри формы над любой другой кнопкой отправки. Технически это будет представлено другой кнопкой при нажатии Enter, чем при нажатии на видимую кнопку Next. Но поскольку имя и значение совпадают, в результате нет разницы.

Я бы использовал JavaScript для отправки формы. Функция будет вызвана событием OnKeyPress элемента формы и обнаружит, Enter был ли выбран ключ. Если это так, он отправит форму.

Изменение порядка вкладок должно быть все, что нужно для достижения этой цели. Будь проще.

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

И напишите следующую кодировку:

Изменение порядка вкладок должно быть все, что нужно для достижения этой цели. Будь проще.

В первый раз, когда я столкнулся с этим, я натолкнулся на взлом onclick () / JavaScript, когда выбор не является предысторией / следующей, которая мне все еще нравится из-за ее простоты. Это выглядит так:

Вот что я попробовал:

Я столкнулся с этим вопросом, пытаясь найти ответ на одно и то же, в основном только с элементами управления ASP.NET, когда я выяснил, что у кнопки ASP есть свойство, UseSubmitBehavior которое позволяет вам указать, какой из них выполняет отправку.

На всякий случай, если кто-то ищет способ сделать это с помощью кнопки ASP.NET.

С помощью JavaScript (здесь jQuery) вы можете отключить кнопку prev перед отправкой формы.

Я решил очень похожую проблему следующим образом:

Если JavaScript включен (в большинстве случаев в настоящее время), то все кнопки отправки « разлагаются » на кнопки при загрузке страницы через JavaScript (jQuery). События нажатия на « деградированную » кнопку. Типизированные кнопки также обрабатываются с помощью JavaScript.

Вы можете использовать Tabindex для решения этой проблемы. Также изменение порядка кнопок будет более эффективным способом для достижения этой цели.

Измените порядок кнопок и добавьте float значения, чтобы назначить им желаемое положение, которое вы хотите показать в своем HTML представлении.

Используя пример, который вы дали:

Если вы нажмете «Предыдущая страница», будет отправлено только значение «предыдущая». Если вы нажмете «Следующая страница», будет отправлено только значение «Далее».

Однако если вы нажмете Enter где-нибудь в форме, ни «предыдущая», ни «следующая» не будут отправлены.

Таким образом, используя псевдокод, вы можете сделать следующее:

Источник

Несколько кнопок отправки в HTML-форме

допустим, вы создаете мастер в HTML-форме. Одна кнопка идет назад, а другая вперед. Так как назад кнопка появляется сначала в разметке при нажатии Enter он будет использовать эту кнопку, чтобы отправить форму.

что я хотел бы сделать, это решить, какая кнопка используется для отправки формы, когда пользователь нажимает Enter. Таким образом, при нажатии клавиши Enter мастер перейдет на следующую страницу, а не предыдущая. Вы должны использовать tabindex для этого?

23 ответов:

Я надеюсь, что это помогает. Я просто делаю трюк float ing кнопки справа.

таким образом, кнопка Prev находится слева от следующей кнопки, но следующая идет первой в HTML-коде:

Edit: преимущества перед другими предложениями: нет JavaScript, доступны, обе кнопки остаются type=»submit»

можно ли было бы изменить предыдущий тип кнопки на такую кнопку:

Теперь следующая кнопка будет по умолчанию, плюс вы может также добавить default атрибут к нему, так что ваш браузер будет выделять его так:

надеюсь, что это поможет.

дайте вашим кнопкам отправки такое же имя, как это:

когда пользователь нажимает enter и запрос идет на сервер, вы можете проверить значение для submitButton на вашем серверном коде, который содержит коллекцию form name/value пар. Например, в классическом ASP:

если тот факт, что первая кнопка используется по умолчанию, согласован между браузерами, почему бы не поместить их правильно в исходный код, а затем использовать CSS для переключения их видимых позиций? float их влево и вправо, чтобы переключить их вокруг визуально, например.

Если вы действительно просто хотите, чтобы он работал как диалог установки, как насчет того, чтобы просто сосредоточиться на кнопке «Далее» OnLoad. Таким образом, если пользователь нажимает Return, форма отправляет и идет вперед. Если они хотят вернуться, они могут нажать вкладку или нажать на кнопку.

поместите их в разметку как следующую кнопку сначала, затем предыдущую кнопку Далее.

затем использовать CSS, чтобы расположить их так, как вы хотите

иногда предоставленного решения @palotasb недостаточно. Есть случаи использования, когда, например, кнопка» фильтр «submit помещается над кнопками, такими как»следующий и предыдущий». Я нашел обходной путь для этого: скопировать кнопка отправки, которая должна действовать как кнопка отправки по умолчанию в скрытом div и поместить его внутри формы над любой другой кнопкой отправки. Технически он будет представлен другой кнопкой при нажатии Enter, а затем при нажатии на видимый далее кнопка. Но поскольку имя и значение одинаковы, нет никакой разницы в результате.

Кевин, это не может быть сделано с чистым HTML. Вы должны полагаться на JavaScript для этого трюка.

однако, если вы разместите две формы на HTML-странице, вы можете сделать это.

Form1 будет иметь предыдущую кнопку.

Form2 будет иметь любые пользовательские входы + следующая кнопка.

когда пользователь нажимает введите в Form2, следующая кнопка отправки будет срабатывать.

Я бы использовал Javascript для отправки формы. Функция будет вызвана событием OnKeyPress элемента формы и определит, был ли выбран ключ Enter. Если это так, он отправит форму.

вот две страницы, которые дают методы о том, как это сделать: 1,2. Основываясь на них, вот пример использования (на основе здесь):

это работает без javascript или CSS в большинстве браузеров:

Firefox, Opera, Safari, Google Chrome все работают.
Как всегда, IE-это проблема.

эта версия работает, когда javascript включен:

Так что недостаток в этом решении:
Предыдущая страница не работает, если вы используете IE с отключенным Javascript.
Имейте в виду, кнопка назад все еще работает!

Если у вас есть несколько активных кнопок на одной странице, то можно сделать что-то вроде этого:

отметьте первую кнопку, которую вы хотите триггеры на введите нажатие по умолчанию на форме. Для второй кнопки свяжите его с Backspace на клавиатуре. Backspace eventcode составляет 8.

надеюсь, что это помогает.

изменить порядок должен быть все, что нужно для этого. Пусть все будет просто.

еще один простой вариант-поместить кнопку «назад» после кнопки «отправить» в HTML-коде, но переместить ее влево, чтобы она появилась на странице перед кнопкой «Отправить».

еще один простой вариант-поместить кнопку «назад» после кнопки «отправить» в HTML-коде, но переместить ее влево, чтобы она появилась на странице перед кнопкой «Отправить».

изменить порядок должен быть все, что нужно для этого. Пусть все будет просто.

это то, что я пробовал: 1. Вам нужно убедиться, что вы даете своим кнопкам разные имена 2. Напишите оператор if, который выполнит необходимое действие, если нажата какая-либо кнопка.

кнопка элемента формы по умолчанию является первой кнопкой отправки в дереве заказ, владельцем формы которого является этот элемент формы.

Если агент пользователя поддерживает разрешение пользователю неявно отправлять форму (например, на некоторых платформах нажатие клавиши «enter» во время ввода текста поле ориентировано беспрекословно подчиняется форме).

имеющая следующие input be type= «submit»и изменение предыдущего ввода на type=» button » должно дать желаемое поведение по умолчанию.

в первый раз, когда я столкнулся с этим, я придумал onclick()/js hack, когда выбор не prev/next, который мне все еще нравится за его простоту. Это звучит так:

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

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

я столкнулся с этим вопросом, пытаясь найти ответ на в основном то же самое, только с помощью asp.net элементы управления, когда я понял, что кнопка asp имеет свойство под названием UseSubmitBehavior что позволяет установить, какой из них делает подачу.

на всякий случай, если кто-то ищет asp.net кнопка способ сделать это.

С помощью javascript (здесь jQuery) вы можете отключить кнопку prev перед отправкой формы.

я решил очень похожую проблему следующим образом:

если javascript не включен, то форма подается в браузер с множеством кнопок. В этом случае попадание введите на textfield в пределах формы будет представлена форма с первой кнопкой вместо предполагаемого по умолчанию, но, по крайней мере, форма по-прежнему используется: Вы можете отправить как с prev и далее кнопки.

можно использовать Tabindex чтобы решить эту проблему, также изменение порядка кнопки было бы более эффективным способом для достижения этой цели. Измените порядок кнопок и добавьте float значения, чтобы назначить им нужную позицию, которую вы хотите показать в своем HTML вид.

Если вы нажмете на «Предыдущая страница», будет отправлено только значение» prev». Если вы нажмете на «Следующая страница», будет отправлено только значение» далее».

Если, однако, вы нажмете enter где-то в форме, ни «prev», ни «next» не будут отправлены.

таким образом, используя псевдо-код, вы можете сделать следующее:

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • html код для формы заявки адрес
  • html код авторское право