不需要的字段只允许字母和数字?

Allowing only letters and numbers for not required field?

我正在使用 Jquery 验证插件来验证表单字段。我有一个场景,我们需要验证该字段以仅允许输入字母和数字,如果它是键入的并且该字段不是必需的。

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

我的代码只接受字母和数字。但是,如果我使用,即使我将 required 设置为 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]+"
        }

只是我不想 运行 在有人输入之前验证规则中的脚本。

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

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

终于自己找到了

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

 lastname: {

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

以上代码解决了我的问题。希望对大家有帮助!

I've code that do accept only letters and numbers. But, if I use, it makes the field mandatory even if I set required to false.

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

Simply I don't want to run the validate script in rules until someone types.

您还需要检查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");

Allowing only letters and numbers for not required field?

您不需要为此编写自定义方法。您可能刚刚使用了 the additional-methods.js file.

中的 alphanumeric 方法