Действительно ли требуется действие на формах? - PullRequest
34 голосов
/ 22 февраля 2012

Здесь говорится, что это необходимо

http://www.w3schools.com/tags/att_form_action.asp

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

Ответы [ 4 ]

47 голосов
/ 22 февраля 2012

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

Да, форма требуется , чтобы иметь атрибут действия в HTML4.Если он не установлен, браузер, скорее всего, будет использовать тот же метод, что и пустая строка.Вы действительно должны установить action="", который является абсолютно правильным HTML4, соответствует стандартам и достигает того же самого точного результата.

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

13 голосов
/ 22 февраля 2012

Похоже, спецификация HTML4 требует .Я подозреваю, что некоторые браузеры делают то, что вы хотите, чтобы "сделать вещи проще".Я не рекомендую полагаться на это все же.Поскольку вы находитесь в неопределенном поведении, браузер может разумно решить просто ничего не делать, когда форма отправлена ​​без action.

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

<form action="" ...>

Как уже упоминалось bazmegakapa, спецификации HTML5 не требуется атрибут action :

Атрибуты содержимого action и formaction, , если указано , должны иметь значение, которое является допустимым непустым URL-адресом, потенциально окруженным пробелами.1019 * Интересно, что в HTML5 это означает, что <form action=""> недопустимо, но неясно, требуется ли для работы форма без действия (отправить на текущую страницу).

5 голосов
/ 22 февраля 2012

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

РЕДАКТИРОВАТЬ: Как мне было отмечено, этот вопрос помечен как HTML 5: В HTML5 они перечисляют атрибут действия, который больше не требуется: http://www.w3schools.com/html5/att_form_action.asp, что соответствует спецификациям HTML 5.

1 голос
/ 29 сентября 2018

// предупреждение о воскрешении нити

Расширение после ответа анимусона ...

Если после всех атрибутов кнопки formaction и формы action были оценены, если "действие" все еще оценивает как "пустую строку", затем из секции спецификации HTML5.2 4.10.21.3 точка 8 состояний:

Если действие - пустая строка, пустьaction - это URL-адрес документа формы.

когда дело доходит до отправки формы, это то, что вам нужно.

...