为什么Chrome会在空白字段中显示"请填写此字段"工具提示?

Tia*_*ias 53 html5 google-chrome popup

我的客户联系了我,说用户投诉说某些字段现在显示工具提示,上面写着"请填写此字段".我无法相信我所听到的......但是客户端是对的 - 使用最新的Chrome版本,某些字段显示浏览器工具提示,此消息甚至与我的验证器并排!

有什么问题?我错过了什么?

谢谢.

编辑:

我的用户控件生成的HTML如下:

<input name="tbMontante" type="text" maxlength="8" size="10" tbMontante" class="Montantetextfield" 
    FieldName="Montante" 
    Required="True" 
    AllowDecimalValues="True" 
/>
Run Code Online (Sandbox Code Playgroud)

编辑:

我的文档类型如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Run Code Online (Sandbox Code Playgroud)

我的浏览器应该使用HTML 5来解析吗?

Bra*_*don 47

您使用的是HTML5 必需属性吗?

这将导致Chrome 10显示一个气球,提示用户填写该字段.

  • 您正在使用HTML5必需属性.HTML4中没有必需的属性 - http://www.w3.org/TR/html4/index/attributes.html.删除所需的属性,你会没事的.在http://validator.w3.org验证您的代码 (10认同)
  • 如果您不希望它被选为html5必需属性,请使用data-required ="true"而不是required ="true" (4认同)
  • @ sunn0:他并不是真的"使用HTML5`requires属性".他发明了自己的属性,现在碰撞了同名的HTML5属性. (3认同)

Tia*_*ias 36

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

您可以在表单中禁用验证.

  • 我在AngularJS应用程序中遇到了这个问题.它是由于<form>标记中不包含novalidate属性引起的. (13认同)

Fre*_*d K 28

novalidate="novalidate"<form>标签.

<form novalidate="novalidate">
...
</form>
Run Code Online (Sandbox Code Playgroud)

在XHTML中,禁止属性最小化,并且必须将novalidate属性定义为<form novalidate="novalidate">.

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


Tow*_*hid 13

要在Web-kit浏览器中停止Html5弹出/气球,请使用以下CSS

::-webkit-validation-bubble-message { display: none; }
Run Code Online (Sandbox Code Playgroud)

  • 这不再有效.http://stackoverflow.com/questions/5713405/how-do-you-style-the-html5-form-validation-messages (3认同)

RoT*_*oRa 8

正如我提到的在您的其他问题:

与此相关的问题是,您发明了自己的非标准属性(首先不应该这样做),现在新标准化属性(或标准化过程中的属性)正在与它们发生冲突.

适当的解决方案是完全删除您的发明属性和与理智的东西代替它们,例如类(class="Montantetextfield fieldname-Montante required allow-decimal-values"),或存储它们在JavaScript:

var validationData = {
  "Montante": {fieldname: "Montante", required: true, allowDecimalValues: true}
}
Run Code Online (Sandbox Code Playgroud)

如果正确的解决方案不可行,则必须重命名.在这种情况下,你应该使用前缀data-...因为这是由HTML5为此目的保留的,并且它不太可能与某些东西发生冲突 - 但它仍然可以,所以你应该认真考虑第一个解决方案 - 即使是更多的工作更改.