Можно ли повторить атрибут действия формы HTML? - PullRequest
1 голос
/ 11 октября 2010

У меня есть приложение, которое генерирует элемент с атрибутом 'action'.Мне нужно изменить значение атрибута действия, но это невозможно сделать.Однако можно добавить еще один атрибут 'action' перед сгенерированным, таким образом:

Кажется, это работает для IE.Я хотел бы знать, определено ли это поведение в стандартах w3c и могу ли я полагаться на браузеры, выбирающие первый атрибут действия.Я немного искал документы по стандартам, но не смог определить правило для повторяющихся атрибутов.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 11 октября 2010

В спецификации сказано, что в форме может быть только один атрибут action.

Это имеет смысл, поскольку атрибут action указывает страницу, на которой будут размещаться данные формы, и размещение на двух разных страницах не имеет смысла (как вы видите результаты с нескольких страниц?).

Если вы посмотрите на фрагмент DTD , определяющий элемент FORM из спецификации :

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
<!ATTLIST FORM
  %attrs;                              -- %coreattrs, %i18n, %events --
  action      %URI;          #REQUIRED -- server-side form handler --
  method      (GET|POST)     GET       -- HTTP method used to submit the form--
  enctype     %ContentType;  "application/x-www-form-urlencoded"
  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
  name        CDATA          #IMPLIED  -- name of form for scripting --
  onsubmit    %Script;       #IMPLIED  -- the form was submitted --
  onreset     %Script;       #IMPLIED  -- the form was reset --
  accept-charset %Charsets;  #IMPLIED  -- list of supported charsets --
  >

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

Вероятно, только случайно это работает в IE. Поведение не определено, и другой браузер может либо захлебнуться этим вводом, либо выбрать случайный атрибут действия.

0 голосов
/ 11 октября 2010

+ 1 для ответа Одеда: D

Кстати, если вам нужно отредактировать оригинал action, возможно, вы можете попробовать использовать javascript:

$("#your_form").attr("action", "something_else"); // in jQuery
...