it-roy-ru.com

Действительно ли требуется действие на формах?

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

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

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

33
Alex

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

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

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

46
animuson

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

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

<form action="" ...>

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

Атрибуты содержимого action и formaction, , если указано, должны иметь значение, которое является допустимым непустым URL, потенциально окруженным пробелами. [Выделение добавлено]

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

12
Brendan Long

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

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

5
swannee

// поток воскресения

Чтобы продолжить ответ анимусона ...

Если все-таки атрибуты кнопки formaction и формы action были оценены, если «action» по-прежнему оценивает как «пустую строку», то из раздела спецификации HTML5.2 4.10.21.3 point 8 говорится:

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

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

0
Neil Moss