HTML почему кнопки в формах отправляют данные? - PullRequest
6 голосов
/ 28 марта 2012

Это очень элементарный вопрос, но я уверен, что кто-то там знает почему.В HTML, когда я делаю элемент кнопки сам по себе, и не даю ему и onclick, и никакого jQuery .click(), кнопка просто ничего не сделает.Отлично.Но когда я делаю это и кроме кнопки внутри элемента <form>, он пытается отправить GET-данные всех элементов формы на корневой адрес моего веб-сайта?Почему он это делает?Я не сделал это кнопкой отправки или даже определил method или action в этой форме ??

Спасибо за информацию заранее!

** РЕДАКТИРОВАТЬ **

Это то, что я сделал, чтобы исправить проблему.Для кнопок внутри <form> используйте:

<button type="button"></button>

И по умолчанию он ничего не сделает.

Ответы [ 4 ]

9 голосов
/ 28 марта 2012

Как видно из соответствующей записи MDN , значением по умолчанию для свойства type элемента кнопки является submit. Поэтому, если вы пропустите его или не измените его на button или reset, будет применено поведение по умолчанию и форма будет отправлена.

<form action="">
  <button type="button">Nothing will happen</button>
  <button>Form gets submitted</button>
</form>
4 голосов
/ 28 марта 2012

Я не сделал кнопку отправки

<button> элементы имеют атрибут a type. Значением по умолчанию является submit. Установите type="button", если вы не хотите, чтобы он отправлял форму.

или даже определить метод

method по умолчанию GET

или место в этой форме ??

action по умолчанию используется текущий URI.

0 голосов
/ 28 марта 2012

Кнопки обрабатываются как элементы управления отправкой в ​​формах, не знаю почему.

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

Причина, по которой он использовал GET, заключается в том, что это значение по умолчанию method.

Чтобы предотвратить это, добавьте return false; в конец onclick.

вашей кнопки.
0 голосов
/ 28 марта 2012

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

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