为什么 jQuery Validate 会忽略 Html 输入模式?

Why does jQuery Validate ignore the Html input pattern?

我正在尝试使用 jQuery validate 来验证输入是否与输入模式匹配,但看起来它没有检查模式。

HTML:

<form id="testform">
    <input id="MyInput" 
           name="MyInput"
           pattern="[A-Za-z0-9-_]"
           minlength="6"
           data-msg-pattern="Wrong input"
           data-msg-minlength="Too short"
           data-msg-required="Input required"
           required/>
    <button class="btn btn-primary" id="AddMyInput">Add</button>
</form>

Javascript:

$("#AddMyInput").click(function () {
  event.preventDefault();
  myvalidator = $("#testform").validate();
  if (myvalidator.form()) {
    alert("Great!"); 
  } 
});

Link 例如:JSFiddle

我尝试将输入限制为字母数字字符加上 - 和 _。但是看起来模式被jQuery验证忽略了,尝试在输入字段中输入'hello guys!!',它会警告'Great!',但输入无效。

默认情况下,pattern 规则不是此插件的一部分。但是,您只需 include the additional-methods.js file 即可添加它。

你的 jsFiddle:jsfiddle.net/8mhzrdyv/


作为旁注,您不应该在 click 处理程序中初始化插件。查看您的简单演示,首先确实不需要 click 处理程序。通过调用初始化插件的 .validate()click 事件由插件本身自动处理。

演示:jsfiddle.net/8mhzrdyv/1/

$(function() {
    $("#testform").validate();  // initialize plugin
});