【问题标题】:How can I change or remove HTML5 form validation default error messages?如何更改或删除 HTML5 表单验证默认错误消息?
【发布时间】:2012-05-08 20:10:54
【问题描述】:

例如,我有一个textfield。该字段为必填项,只需要数字,值的长度必须为10。当我尝试提交长度为5的表单时,出现默认错误消息:Please match the requested format

<input type="text" required="" pattern="[0-9]{10}" value="">
  1. 如何更改 HTML 5 表单验证错误的默认消息?
  2. 如果可以做到第一点,那么有没有办法创建一些属性文件并在该文件中设置自定义错误消息?

【问题讨论】:

  • 我在 Mahoor13 答案中发现了一个错误,它没有循环工作,所以我已经修复了它并给出了一些更正的答案,你可以在答案部分找到。 这是链接 stackoverflow.com/questions/10361460/…

标签: html validation


【解决方案1】:

这是 JavaScript 解决方案:

 <input type="text"
    pattern="[a-zA-Z]+"
    oninvalid="setCustomValidity('Please enter Alphabets.')"
    onchange="try{setCustomValidity('')}catch(e){}" />

“onchange”事件需要当你设置一个无效的输入数据,然后更正输入并再次发送表单。 我已经在 Firefox、Chrome 和 Safari 上测试过了。

但对于现代浏览器:

现代浏览器不需要任何 JavaScript 进行验证。 就这样做吧:

<input type="text"
    pattern="[a-zA-Z]+"
    title="Please enter Alphabets."
    required="" />

【讨论】:

  • 我建议不要使用内联事件。这不是一个好习惯。
  • @Mahoor13 我已经写了类似的,但它永远不会验证。能给个提示吗? jsfiddle.net/2USxy
  • html5 表单验证需要现代浏览器看这个页面:diveintohtml5.info/forms.html
  • 最好使用“onkeyup”而不是“onchange”来有效地查看输入是否有效。
  • 这有以下问题(至少在 Chrome 55 中):当弹出无效消息时,如果用户将焦点保持在无效字段(不点击)并编辑该字段,则消息不断弹出 -即使该字段有效 - 也有必要关注或触发提交。
【解决方案2】:

当使用 pattern= 时,它将显示您在标题属性中输入的任何内容,因此不需要 JS 只需这样做:

<input type="text" required="" pattern="[0-9]{10}" value="" title="This is an error message" />

【讨论】:

  • 非常好的答案。但与所有 HTML5 一样,可靠性取决于浏览器。该解决方案适用于 FF 15 和 Chrome 22,但不适用于 Safari 5。(使用 OS X Lion 测试)
  • 当我将标题设置为“foo”时,我得到“请匹配请求的格式。foo”,所以这对我不起作用
  • Title 也用作鼠标悬停时的提示文本,所以我会远离这种方法。
  • Title 也用作鼠标悬停时的工具提示文本,所以这可能是最好的方法。
  • 我认为 title 属性的想法是描述“输入 10 位数字”之类的要求。而不是像“这不是一个有效的数字”这样的错误。在描述需求时,鼠标悬停和验证错误消息中出现相同的文本没有问题。 (我并不是说我的措辞是最好的,我知道是否说“Enter...”与“Value must be...”等可能存在争议。)
【解决方案3】:
<input type="text" pattern="[a-zA-Z]+"
oninvalid="setCustomValidity('Plz enter on Alphabets ')" />

我在另一篇文章中找到了这段代码。

【讨论】:

【解决方案4】:

HTML:

<input type="text" pattern="[0-9]{10}" oninvalid="InvalidMsg(this);" name="email" oninput="InvalidMsg(this);"  />

JAVASCRIPT:

function InvalidMsg(textbox) {

     if(textbox.validity.patternMismatch){
        textbox.setCustomValidity('please enter 10 numeric value.');
    }    
    else {
        textbox.setCustomValidity('');
    }
    return true;
}

Fiddle Demo

【讨论】:

    【解决方案5】:

    您可以通过以下操作删除此警报:

    <input type="text" pattern="[a-zA-Z]+"
        oninvalid="setCustomValidity(' ')"
    />
    

    只需将自定义消息设置为一个空格

    【讨论】:

      【解决方案6】:

      使用 jQuery 防止浏览器验证消息出现在您的文档中:

      $('input, select, textarea').on("invalid", function(e) {
          e.preventDefault();
      });
      

      【讨论】:

        【解决方案7】:

        您可以通过约束验证 api 更改它们:http://www.w3.org/TR/html5/constraints.html#dom-cva-setcustomvalidity

        如果您想要一个简单的解决方案,您可以使用 civem.js,自定义输入验证错误消息 JavaScript 库 在这里下载:https://github.com/javanto/civem.js 现场演示:http://jsfiddle.net/hleinone/njSbH/

        【讨论】:

          【解决方案8】:

          setCustomValidity 可让您更改默认验证消息。这是一个简单的使用示例。

          var age  =  document.getElementById('age');
              age.form.onsubmit = function () {
              age.setCustomValidity("This is not a valid age.");
           };
          

          【讨论】:

            【解决方案9】:

            我现在偶然发现了一条路: 你可以使用这个:data-error:""

            <input type="username" class="form-control" name="username" value=""
            placeholder="the least 4 character"
            data-minlength="4" data-minlength-error="the least 4 character"
            data-error="This is a custom Errot Text fot patern and fill blank"
            max-length="15" pattern="[A-Za-z0-9]{4,}"
            title="4~15 character" required/>
            

            【讨论】:

              【解决方案10】:

              为 HTML 5 验证设置自定义错误消息,

              oninvalid="this.setCustomValidity('Your custom message goes here.')"
              

              并在用户输入有效数据使用时删除此消息,

              onkeyup="setCustomValidity('')"
              

              希望这对你有用。享受;)

              【讨论】:

                【解决方案11】:

                这是我发现的关于检查 html5 验证的各种属性的非常好的链接。

                https://dzone.com/articles/custom-validation-messages

                希望对某人有所帮助。

                【讨论】:

                  【解决方案12】:

                  我在 Mahoor13 答案上发现了一个错误,它没有循环工作,所以我已经通过这个更正修复了它:

                  HTML:

                  <input type="email" id="eid" name="email_field" oninput="check(this)">
                  

                  Javascript:

                  function check(input) {  
                      if(input.validity.typeMismatch){  
                          input.setCustomValidity("Dude '" + input.value + "' is not a valid email. Enter something nice!!");  
                      }  
                      else {  
                          input.setCustomValidity("");  
                      }                 
                  }  
                  

                  它将完美地循环运行。

                  【讨论】:

                    【解决方案13】:

                    如您所见:

                    html5 oninvalid doesn't work after fixed the input field

                    这样对你有好处,因为当你修复错误时会消失警告消息。

                    <input type="text" pattern="[a-zA-Z]+"
                    oninvalid="this.setCustomValidity(this.willValidate?'':'your custom message')" />
                    

                    【讨论】:

                      【解决方案14】:

                      这适用于我在 Chrome 中的工作

                      <input type="text" name="product_title" class="form-control" 
                          required placeholder="Product Name" value="" pattern="([A-z0-9À-ž\s]){2,}"
                          oninvalid="setCustomValidity('Please enter on Producut Name at least 2 characters long')" />

                      【讨论】:

                        【解决方案15】:

                        你可以对

                        标签使用“novalidate”

                        click here for more deteails

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2019-03-12
                          • 2018-09-27
                          • 2021-12-30
                          • 2020-08-15
                          • 2012-02-15
                          • 1970-01-01
                          • 2020-04-10
                          相关资源
                          最近更新 更多