Почему Chrome показывает подсказку "пожалуйста, заполните это поле" на пустых полях?

Я связался с моим клиентом, сказав, что жалоба пользователей говорит, что некоторые поля теперь показывают всплывающую подсказку с сообщением "пожалуйста, заполните это поле". Я не мог поверить своим ушам... но клиент прав-используя последнюю версию Chrome, некоторые поля показывают подсказку браузера с этим сообщением даже рядом с моими валидаторами!

в чем проблема? Что я упускаю?

спасибо.

EDIT:

HTML, созданный моим пользовательским элементом управления следующим образом:

<input name="tbMontante" type="text" maxlength="8" size="10" tbMontante" class="Montantetextfield" 
    FieldName="Montante" 
    Required="True" 
    AllowDecimalValues="True" 
/>

EDIT:

мой doctype выглядит следующим образом:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

должен ли мой браузер использовать HTML 5 для его анализа?

9 ответов


вы используете HTML5 требуются?

Это приведет к тому, что Chrome 10 отобразит воздушный шар, предлагающий пользователю заполнить поле.


https://www.w3.org/TR/html5/sec-forms.html#element-attrdef-form-novalidate

вы можете отключить проверку в форме.


поставить novalidate="novalidate" on <form> тег.

<form novalidate="novalidate">
...
</form>

в XHTML минимизация атрибутов запрещена, а novalidate атрибут должен быть определен как <form novalidate="novalidate">.

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


чтобы остановить всплывающее окно/воздушный шар Html5 в браузере Web-kit, используйте следующий CSS

::-webkit-validation-bubble-message { display: none; }

как я уже упоминал в другом вашем вопросе:

на правильный решение состоит в том, чтобы полностью удалить ваши изобретенные атрибуты и заменить их что-нибудь разумное, например. классы (class="Montantetextfield fieldname-Montante required allow-decimal-values"), или хранить их в JavaScript:

var validationData = {
  "Montante": {fieldname: "Montante", required: true, allowDecimalValues: true}
}

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


вам нужно добавить атрибут "formnovalidate" в элемент управления, который запускает проверку браузера, например:

<input type="image" id="fblogin" formnovalidate src="/images/facebook_connect.png">

если у вас есть html-форма, содержащая одно или несколько полей с" обязательными " атрибутами, Chrome (в последних версиях) проверит эти поля перед отправкой формы, и, если они не заполнены, пользователям будут показаны некоторые подсказки, которые помогут им получить отправленную форму (т. е. "пожалуйста, заполните это поле").

чтобы избежать этой встроенной проверки браузера в формах, вы можете использовать "novalidate"


в Chrome (V.56-это то, что я использую, но я AFAIK это применяется в целом) вы можете установить title=" " (одно пространство), и автоматический текст заголовка будет переопределен и ничего не отображается. (Если вы попытаетесь сделать его просто пустой строкой, он будет относиться к нему так, как будто он не установлен, и добавит текст автоматической подсказки, который вы получаете).

Я не тестировал это в других браузерах, потому что я нашел его, делая расширение Google Chrome. Я уверен, что как только я переношу вещи в другие браузеры, однако, я посмотрю, работает ли он в них (если это даже необходимо).


Эй, мы только что сделали глобальный поиск-замена, изменение требуется=" to jRequired=". Затем вы просто измените его в коде jquery (jquery_helper.JS - > функция ValidateControls). Теперь наша проверка продолжается, как и раньше, и Chrome оставляет нас в покое! :)