Вопрос

Здесь сказано, что это необходимо

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

<form action="" ...>

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

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

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

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

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

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

В продолжение ответа анимусона ...

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

<цитата>

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top