22

当我在这样的输入中使用模式时:

<input type="text" value="" pattern="(\d|(\d,\d{0,2}))"> 

我收到带有文本的弹出警告。如何轻松更改此文本?

4

5 回答 5

42
<input type="text" value="" pattern="(\d|(\d,\d{0,2}))" title="YOUR_WARNING_TEXT" > 
于 2012-07-31T11:44:50.463 回答
7

显示的文本可以在标签的title属性中定义。input

于 2012-07-31T11:33:35.777 回答
7
<input type="text" value="" pattern="(\d|(\d,\d{0,2}))" oninvalid="this.setCustomValidity('ERROR_TEXT')" oninput="this.setCustomValidity('')"/>

试试这个代码,输入后更正以清除...

于 2017-06-05T13:06:01.353 回答
5

这个问题在过去已经得到了回答。请参阅以下 URL 以获得答案:HTML5 表单必需属性。设置自定义验证消息?

于 2012-07-31T11:33:51.457 回答
4

title附加到模式警告中。请记住,警告会被翻译成浏览器语言,这会使英文字符串看起来很奇怪。

这是我发现完全替换警告的唯一方法:

<input type="text" required pattern="PATTERN" oninvalid="invalid" oninput="invalid">
/**
 * Shows a custom validity message
 * @param e - event
 */
function invalid(e) {
  if (!/PATTERN/.test(e.target.value)) { // somehow validity.valid returns a wrong value
    e.target.setCustomValidity('INVALID')
  } else {
    e.target.setCustomValidity('')
  }
}

验证表单后,警告会不断弹出,直到值与模式匹配。如果input事件只是setCustomValidity('')按照大多数其他答案中的建议进行设置,则会返回默认警告。

于 2019-05-15T09:18:56.200 回答