Атрибут autocomplete не проходит проверку XHTML 1.0 Transitional, почему? - PullRequest
3 голосов
/ 25 марта 2010

Я пытаюсь очистить мою проверку xhtml - я запускаю свои страницы через валидатор W3C. По какой-то загадочной причине он не передает поля ввода с атрибутом autocomplete = "off":

<input name="kwsearch" id="sli_search_1" type="text" autocomplete="off" onfocus="if(this.defaultValue==this.value) this.value='';"
            onblur="if(this.value=='')this.value=this.defaultValue;" class="searchbox" value="Search" />

Я использую этот тип документа:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

И это ошибка проверки:

Строка 410, столбец 81: отсутствует атрибут «автозаполнение»

… li_search_1 "type =" text "autocomplete =" off "onfocus =" if (this.defaultValue == thi…

Я думал, что это нормально с W3C - но, может быть, он все еще находится в фазе "представления"? http://www.w3.org/Submission/web-forms2/#autocomplete

Мысли

Ответы [ 5 ]

5 голосов
/ 25 марта 2010

autocomplete является атрибутом HTML5 , поэтому используйте объявление типа документа HTML5, если оно вам необходимо.

5 голосов
/ 25 марта 2010

Спецификация веб-форм не имеет ничего общего с HTML 4 / XHTML.К сожалению, autocomplete не пройдет проверку.

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

1 голос
/ 25 марта 2010

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

0 голосов
/ 13 марта 2015

Я только что столкнулся с этим раздражающим конфликтом между браузерами и стандартами. В итоге я обошел его, запустив javascript НА СТРАНИЦЕ, , а не в ожидании window.onLoad или $(document).ready(), чтобы добавить атрибут ко всем элементам класса no-browser-autocomplete. Затем я просмотрел приложение, удалив autocomplete="off" и добавив этот класс.

Очевидно, что это не удастся в браузерных средах, в которых не работает javascript.

Причина, по которой я делаю это на странице, а не в блоке, готовом к dom, заключается в том, что если вы ждете готовности к dom, браузер уже автоматически завершит его, по крайней мере, в Firefox (который я тестирую).

Итак, это начало одного из файлов javascript, которые я включаю в макет моего приложения:

//this needs to run BEFORE all of the loaded/ready events fire, that's why it's not in the dom.ready function
$(".no-browser-autocomplete").attr("autocomplete", "off");

$(function(){ 
  //dom ready
});
0 голосов
/ 10 июня 2013

Если вам нужно автозаполнение (браузеры его поддерживают), попробуйте расширить ваш тип документа, как показано в XHTML 1.1 ниже:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [ <!ATTLIST form autocomplete (on|off) #IMPLIED> ]>

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