Что недостатки там к <кнопка> тег?

.GroupName & amp; & amp; N не выглядит правильно. Один & amp; должно хватить. - Вариатус

64
задан Kzqai 30 December 2018 в 03:22
поделиться

10 ответов

Ответ с точки зрения ASP.NET.

Я был взволнован, когда нашел этот вопрос и некоторый код для элемента управления ModernButton, который, в конце концов, является элементом управления

17
ответ дан 24 November 2019 в 15:54
поделиться

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

Это будет работать согласованно во всех браузерах:

  • <button type="submit">...</button>
  • <button type="button">...</button>

Таким образом, вы получаете все <button> добра, никаких минусов.

49
ответ дан orip 24 November 2019 в 15:54
поделиться

Плюсы:

  • Метка дисплея не должна совпадать с отправленным значением. Отлично подходит для i18n и «Удалить эту строку»
  • Вы можете включить разметку, такую ​​как <em> и <img>

Минусы:

  • Некоторые версии MSIE по умолчанию type="button" вместо type="submit", поэтому вы должны быть явным
  • Некоторые версии MSIE будут обрабатывать все <button> как успешные, поэтому вы не можете сказать, какая из них была нажата в мульти -Submit Button Form
  • Некоторые версии MSIE будут отправлять отображаемый текст вместо реального значения

Из https://developer.mozilla.org/en-US / docs / Web / HTML / Element / button :

В IE7 есть ошибка, из-за которой при отправке формы с помощью Click me отправленные данные POST приводят к myButton = Click me вместо myButton = Foo. В IE6 ошибка еще хуже, когда при отправке формы через кнопку отправляются ВСЕ кнопки формы, с той же ошибкой, что и в IE7. Эта ошибка была исправлена ​​в IE8.

10
ответ дан Kenston Choi 24 November 2019 в 15:54
поделиться

У меня был некоторый опыт с причудами <button> сейчас, 6 лет спустя, так что вот мои предложения:

  • Если вы все еще ] поддерживающий IE6 или IE7 , будьте очень осторожны с кнопкой, в этих браузерах поведение очень глючное, в некоторых случаях отправляя innerHtml вместо value = 'what' и всех значений кнопок вместо всего лишь одного и такого странного поведения. Так что проверяйте тщательно или избегайте ради этого браузера.

  • В противном случае: если вы все еще поддерживаете IE8 , <a href='http://example.com'><button></button></a> не работает должным образом, и, вероятно, что-нибудь еще, где вы вкладываете кнопку в элемент, активируемый нажатием. Так что следите за этим.

  • В противном случае: Если вы используете <button> в основном как элемент для щелчка по своему javascript, и он находится за пределами формы, сделайте его <button type='button'>, и вы, вероятно, будете в порядке!

  • В противном случае: если вы используете <button> в форме, будьте осторожны, что тип по умолчанию <button> на самом деле <button type='submit'> в (большинстве) случаях, так что будьте явными с вашим введите и ваш value, например: <button type='submit' value='1'>Search</button>.

Обратите внимание: с помощью класса имитации кнопок, такого как Bootstrap .btn, вы можете просто заставить вещи вроде <div> или <a> или даже <button> выглядеть именно так, как вы этого хотите, и в случае <a> есть более полезный резервный режим. Неплохой вариант.

TLDR; Можно использовать, если вы не заботитесь о древних браузерах, но Bootstrap предоставляет еще более надежные альтернативы визуально схожим css, которые стоит рассмотреть.

5
ответ дан Kzqai 24 November 2019 в 15:54
поделиться

Вот сайт, который объясняет различия: http://www.javascriptkit.com/howto/button.shtml

По сути, тег ввода позволяет только текст (хотя вы можете использовать фоновое изображение), а кнопка позволяет добавлять изображения, таблицы, div-ы и все остальное. Кроме того, он не требует, чтобы он был вложен в тег формы.

1
ответ дан Chris Haas 24 November 2019 в 15:54
поделиться

Насколько мне известно, разница между тегами submit и button заключается в следующем: дает вам возможность отображать текст, отличный от значения элемента

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

product1 : <add to cart>
product2 : <add to cart>
product3 : <add to cart>

тогда вы можете сделать это:

<button name="buy" type="submit" value="product2"> add to cart </button>

Теперь проблема в том, что IE отправит форму со значением = "добавить в корзину" вместо значения = "product2"

Самый простой способ обойти эту проблему - добавить onclick = "this.value = 'product2'"

Итак, это:

<button name="buy" type="submit" value="product2" onclick="this.value='product2'"> add to cart </button>

справятся со всеми основными браузерами - я использовал это в форме с несколькими кнопками и работает с Chrome Firefox и IE

0
ответ дан George Panic 24 November 2019 в 15:54
поделиться

Сломан он или нет:

Как обычно, ответ: « это прекрасно работает во всех основных браузерах, но имеет следующие особенности в IE. «Я не думаю, что это будет проблемой для вас.

Тег , а также отправит значение каждого другого тега в форме, а не только того, который вы нажали.

Для ваших целей просто очищая старый HTML, это не должно быть проблемой.

Источники:

  1. http://www.peterbe.com/plog/button-tag-in-IE
  2. http: // www. w3schools.com/tags/default.asp[1272 visible
4
ответ дан 24 November 2019 в 15:54
поделиться

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

9
ответ дан 24 November 2019 в 15:54
поделиться

Все, что вам нужно знать: W3Schools , в то время как другие браузеры отправят содержимое атрибута value. Используйте элемент input для создания кнопок в форме HTML.

13
ответ дан 24 November 2019 в 15:54
поделиться

Похоже, что основная причина использования

-2
ответ дан 24 November 2019 в 15:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: