仅允许字母和数字不是必填字段?

时间:2015-07-25 10:48:51

标签: jquery jquery-validate

我正在使用Jquery验证插件来验证表单字段。我的情况是,我们需要验证字段,只允许输入字母和数字,如果输入字段,则不需要该字段。

<input type="text" class="form-control" data-msg-required="Enter your last name" name="lastname" placeholder="Last Name">

我的代码只接受字母和数字。但是,如果我使用它,即使我将其设置为false,它也会使该字段成为必填字段。

jQuery.validator.addMethod("accept", function(value, element, param) {
  return value.match(new RegExp("." + param + "$"));
}, "Please enter a valid name");


  lastname: {
            accept: "[a-zA-Z]+"
        }

在某人输入之前,我不想在规则中运行验证脚本。

3 个答案:

答案 0 :(得分:1)

  

我的代码只接受字母和数字。但是,如果我使用,即使我将required设置为false,也会使该字段成为必填字段。

这是因为您的自定义规则不关心该字段是否为空。您已经编写了它,以便评估空白值。

  

我不想在规则中运行验证脚本,直到有人输入。

您还需要检查this.optional(element)以确保该字段未设置为required(当字段留空时,它可以通过验证。)

jQuery.validator.addMethod("accept", function(value, element, param) {
    return this.optional(element) || value.match(new RegExp("." + param + "$"));
}, "Please enter a valid name");
  

仅允许字母和数字不是必填字段?

您无需为此编写自定义方法。您可以使用the additional-methods.js file中的alphanumeric方法。

答案 1 :(得分:0)

你可以自己做,而不是像这样使用插件:

$('input').on('keypress',function(e){
    if(!/([a-zA-Z0-9])+/.test(String.fromCharCode(e.which))) return false;
});

答案 2 :(得分:0)

我终于自己找到了。

function lastnameRequired() {
    return $('#lastname').val().length > 0;
}

 lastname: {

              required: lastnameRequired,
                accept: {
                param: "[a-zA-Z]+",
                depends: lastnameRequired
             }
            },

上面的代码解决了我的问题。希望它能帮助别人!