Что это означает, когда атрибутом действия формы является «#» (число / символ фунта / знак / символ)? - PullRequest
16 голосов
/ 14 января 2012

Что это означает, когда атрибутом формы action является "#" (число / символ фунта / знак / символ)?

Что происходит, когда атрибут formaction ввода формы имеет значение "#"«?Это препятствует тому, чтобы входные данные были переданы на сервер?

<form method="GET" action="example.php">
    <input type="text" size="20" name="text1" value="text1" formaction="#"/>
    <input type="text" size="20" name="text2" value="text2"/>
    <input type="submit" value="Submit"/>
</form>

Ответы [ 3 ]

13 голосов
/ 14 января 2012

Значение # в качестве ссылки на URL-адрес (в виде action или formaction значения атрибута или иным образом) является ссылкой на начало текущего базового документа.Базовый документ является текущим документом, если не был установлен тег <base href=...>.

Что происходит, зависит от ситуации.Как правило, браузер запрашивает страницу снова с частью запроса в URL (и страница загружается снова, что может означать, что клиентские сценарии выполняются), но если тот же запрос использовался ранее, браузер, вероятно, используетего кеш.Более того, при упоминании начала документа фокус на любом элементе формы теряется, и страница может прокручиваться назад.

Так что, хотя # довольно распространено в некоторых стилях кодирования, оно ненадежно;его цель лучше достигается с помощью обработчиков событий на стороне клиента.

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

2 голосов
/ 14 января 2012

Форма будет отправлена ​​сама себе (текущий URL). Я думаю, что это то же самое, что пустое действие.

Кроме того, может быть полезно, если действие будет изменено JavaScript позже.

1 голос
/ 14 января 2012

Объясняется в школах: http://www.w3schools.com/html5/html5_form_attributes.asp

Атрибуты переопределения форм

Атрибуты переопределения формы позволяют переопределить некоторые из атрибуты, установленные для элемента формы.

Атрибуты переопределения формы:

formaction - переопределяет атрибут действия формы
formenctype - переопределяет атрибут формы enctype
formmethod - переопределяет атрибут метода формы
formnovalidate - переопределяет атрибут novalidate формы
formtarget - переопределяет целевой атрибут формы
Примечание. Атрибуты переопределения форм работают со следующими типами:
отправить и изображение.

<form action="demo_form.asp" method="get" id="user_form">
E-mail: <input type="email" name="userid" /><br />
<input type="submit" value="Submit" />
<br />
<input type="submit" formaction="demo_admin.asp" value="Submit as admin" />
<br />
<input type="submit" formnovalidate="true"
value="Submit without validation" />
<br />
</form>

Так что да, вы абсолютно правы, что оно переопределяет действие, но оно переопределяет только тип ввода submit и изображение, а не текст. Таким образом, вы можете иметь 2 разных кнопки отправки в одной форме, но это может привести к различным типам проверки. Вот для чего я бы его использовал.

Таким образом, # поместит действие на ту же страницу, а не на другую.

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