代码之家  ›  专栏  ›  技术社区  ›  TheOrdinaryGeek

使用自定义消息进行HTML5输入验证

  •  5
  • TheOrdinaryGeek  · 技术社区  · 7 年前

    我正在尝试验证两个输入框,并使用HTML5浏览器验证显示自定义错误消息。

    • 第一个输入至少应为3个字符,无自定义错误。
    • 第二个输入至少应为4个字符,并带有自定义错误。

    验证似乎不适用于我的第二个输入,总是提示我自定义错误消息。当我移除 oninvalid 它起作用了。

    我哪里做错了?

    我的HTML如下;

    <form>
      <input type="text" placeholder="min 3" pattern=".{3,}">
      <input type="text" placeholder="min 4" oninvalid="this.setCustomValidity('Must be 4 Characters')" pattern=".{4,}">
      <input type="submit" value="Check"></input>
    </form>
    

    我相信这是显而易见的。。如有任何帮助,我们将不胜感激。

    这是一个 fiddle .

    1 回复  |  直到 7 年前
        1
  •  4
  •   lealceldeiro VonC    6 年前

    你可以用 oninput 属性以恢复窗体的有效性,如下所示: oninput="setCustomValidity('')" .

    这有一个副作用,即如果键入一个无效输入并提交表单,然后立即键入另一个无效值,则在再次单击“提交”选项之前,将显示默认消息而不是自定义消息。

    (看这个叉子 jsfiddle ,或低于工作段)

    <form>
      <input type="text" pattern=".{3,}" placeholder="min 3">
      <input type="text" placeholder="min 4" pattern=".{4,}" oninvalid="setCustomValidity('Must be 4 Characters')" oninput="setCustomValidity('')">
      <input type="submit" value="Check" />
    </form>

    另一个选项是添加内联文本 title 属性。文本将附加在默认错误消息之后(参见下面的代码段)

    <form>
      <input type="text" pattern=".{3,}" placeholder="min 3">
      <input type="text" placeholder="min 4" pattern=".{4,}" title="Must be 4 Characters">
      <input type="submit" value="Check" />
    </form>