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

时间:2019-04-03 10:37:09

标签: jquery html jquery-validate

我正在尝试使用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!"); 
  } 
});

链接到示例:JSFiddle

我尝试将输入限制为字母数字字符加-和_。但看起来该模式已被jQuery Validate忽略,请尝试输入“ hello guys!”。在输入字段中,它将警告“ Great!”,但输入无效。

1 个答案:

答案 0 :(得分:1)

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

您的jsFiddle:jsfiddle.net/8mhzrdyv/


请注意,您不应该在click处理程序内部初始化插件。看一下您的简单演示,实际上根本不需要click处理程序。通过调用初始化插件的.validate()click事件将由插件本身自动处理。

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

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