Зачем нужны атрибуты name и id для элементов формы <input>
?
Что используется для отправки данных POST и которые я могу исключить?
Зачем нужны атрибуты name и id для элементов формы <input>
?
Что используется для отправки данных POST и которые я могу исключить?
name
используется серверной стороной, это необходимо, если вы планируете обработать поле. id
- это только те элементы label
, при нажатии и доступе с помощью экранных считывателей, могут запускать/вызывать элементы управления формой (входы, выбор).
<form method=POST action="form-processor.php">
<input name=first_name value=john>
</form>
приводит к
$_POST = array( 'first_name' => 'john' );
Если метод GET
, он добавляется к строке запроса:
http://site-name.com/form-handler.php?first_name=john
он популярный для добавления строки запроса со скрытыми вводами:
<input type="hidden" name="q" value="1">
Идентификатор не требуется. Имя также не является обязательным, но браузер не отправляет данные <input>
без него. Это то же самое для POST и GET.
Для входного элемента нет обязательных атрибутов.
http://w3schools.com/tags/tag_input.asp - w3schools всегда имеет отличную информацию.
name
- это атрибут, определяющий "имя переменной" при выполнении сообщения. id
используется для целей javascript и т.д.
имя используется для POST и GET.
id используется для стилизации.
class используется для применения одного и того же стиля к набору элементов, которые имеют один и тот же "класс".
То, как я их запоминаю.
имя используется для отправки POST
name
необходим для post
и get
... но не id
... id
используется обработка клиентской стороны...
требуется имя, id не так важен. Однако идентификатор используется для связывания меток с полями ввода общих форм, такими как переключатель, текстовые поля и т.д.
Необходимо указать имя, чтобы вы могли публиковать или получать значения на следующей странице. Идентификатор необходим для выполнения манипуляций с помощью css и других подобных материалов. Это также возможно только с именем. Поэтому имя более важно. Предоставление идентификатора делает его стандартизованным.
HTML5 цитата
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-name подтверждает, что это не обязательно:
Атрибут содержимого name задает имя элемента управления формы, которое используется при отправке формы и в объекте элементов элемента формы. Если атрибут указан, его значение не должно быть пустой строкой или индексом.
Что произойдет, если он не указан?
В Chromium 75, где я тестировал с nc
, он просто не отправляется:
<!doctype html>
<html lang=en>
<head>
<meta charset=utf-8>
<title>Min sane</title>
</head>
<body>
<form action="http://localhost:8000" method="post">
<p><input type="text" name="key" value="default value"></p>
<p><button type="submit">Submit</button></p>
</form>
</body>
</html>
посылает:
key=default+value
но без name
просто нет.
Однако оба проходят валидатор HTML: https://validator.w3.org/
Зачем вам нужен input
без name
?
JavaScript все еще может получить доступ к значению и что-то с ним сделать.