Согласно W3 Schools ( Ссылка 1 Ссылка 2 ), атрибут type
тега <button>
по умолчанию равен 'submit'
для большинства браузеров. Я хочу изменить это для своего веб-сайта, поэтому всякий раз, когда я пропускаю атрибут type
для <button>
, вместо него по умолчанию используется type='button'
.
Я написал следующее Javascript и поместил его в файл, включенный во все веб-страницы:
$(function() {
// Select all buttons without a type explicitly set, and give them a default type.
$('button:not([type])').prop('type', 'button');
});
Конечно, это не очень удачное решение. Любые элементы <button>
, которые я динамически генерирую без явной установки типа, по умолчанию будут равны type='submit'
(для большинства браузеров).
Есть ли какое-то другое решение для этого? Может быть, какой-нибудь тег <meta>
, который я могу использовать?
EDIT: Есть другое решение.
Моя страница была настроена с элементом <form>
, окружающим большинство страницы. Затем внутри формы было <button>
, предназначенное для динамического создания текстовых полей, которые сами были подключены к <input type='hidden'>
через некоторые Javascript волхвы c. У меня также было несколько нормальных, stati c <input type='text'>
, разбросанных по всей странице и предназначенных для отправки вместе с формой. Единственное истинное значение <button type='submit'>
находится внизу страницы.
Я могу реструктурировать свою страницу таким образом, чтобы <form>
только окружал <button>
внизу страницы, а затем перехватывать во всех элементах, которые я хочу включить в представление, используя их свойство form
, например:
<button>Generate dynamic textbox</button>
<!-- Generated textboxes go here... -->
<input type='hidden' name='dynamicTextboxAccumulation' form='breakfast_menu'>
<input type='text' name='order' value='spam' form='breakfast_menu'>
<form id='breakfast_menu' action='/order/place' method='post'>
<button type='submit'>Place Order</button>
</form>