Почему Chrome отображает всплывающую подсказку «Пожалуйста, заполните это поле» на пустых полях? - PullRequest
53 голосов
/ 22 марта 2011

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

В чем проблема?Что мне не хватает?

Спасибо.

РЕДАКТИРОВАТЬ:

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

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

РЕДАКТИРОВАТЬ:

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

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

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

Ответы [ 9 ]

47 голосов
/ 22 марта 2011

Используете ли вы HTML5 обязательный атрибут ?

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

36 голосов
/ 13 апреля 2011

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

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

27 голосов
/ 08 мая 2015

Положите novalidate="novalidate" на <form> метку.

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

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

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

13 голосов
/ 01 июня 2012

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

::-webkit-validation-bubble-message { display: none; }
8 голосов
/ 13 апреля 2011

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

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

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

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

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

4 голосов
/ 18 марта 2015

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

Чтобы избежать встроенной проверки браузера в формах, вы можете использовать атрибут "novalidate" в теге формы. Эта форма не будет проверена браузером:

<form id="form-id" novalidate>

    <input id="input-id" type="text" required>

    <input id="submit-button" type="submit">

</form>
4 голосов
/ 26 августа 2014

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

<input type="image" id="fblogin" formnovalidate src="/images/facebook_connect.png">
3 голосов
/ 02 марта 2017

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

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

1 голос
/ 01 апреля 2011

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

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