我正在使用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]+"
}
在某人输入之前,我不想在规则中运行验证脚本。
答案 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
}
},
上面的代码解决了我的问题。希望它能帮助别人!