如何在输入中使用模式时更改警告文本?

Tor*_*orv 18 html html5

当我在输入中使用模式时,如下所示:

<input type="text" value="" pattern="(\d|(\d,\d{0,2}))"> 
Run Code Online (Sandbox Code Playgroud)

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

voo*_*417 30

<input type="text" value="" pattern="(\d|(\d,\d{0,2}))" title="YOUR_WARNING_TEXT" > 
Run Code Online (Sandbox Code Playgroud)


kga*_*ron 6

显示的文本可以titleinput标记的属性中定义.


小智 5

过去已经回答了这个问题。请查看以下URL作为答案:HTML5表单必填属性。设置自定义验证消息?


Bre*_*eno 5

<input type="text" value="" pattern="(\d|(\d,\d{0,2}))" oninvalid="this.setCustomValidity('ERROR_TEXT')" oninput="this.setCustomValidity('')"/>
Run Code Online (Sandbox Code Playgroud)

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


Fab*_*rts 5

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

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

<input type="text" required pattern="PATTERN" oninvalid="invalid" oninput="invalid">
Run Code Online (Sandbox Code Playgroud)
/**
 * 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('')
  }
}
Run Code Online (Sandbox Code Playgroud)

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