2010-10-11 2 views
1

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

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

Спасибо.

ответ

3

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

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

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

<!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 -- 
    > 

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

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

0

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

Кстати, если у вас есть, чтобы изменить первоначальную action, может быть, вы могли бы попробовать использовать JavaScript:

$("#your_form").attr("action", "something_else"); // in jQuery 
Смежные вопросы