jQuery 验证插件 : Value in multiple ranges

标签 jquery error-handling validation

我使用 jQuery Validate 插件来验证表单,并且我希望值低于 26 或高于 30。我该如何执行此操作?

我尝试过:

forum_id: { required: true, range: [0,26], range:[40,100] }

但它只采用最后一个范围,因此如果该值低于 40,即使它也低于 26,它也会抛出错误。

有什么建议吗?

最佳答案

似乎没有办法使用插件本身来做到这一点,但有几个人建议使用正则表达式来验证范围。

此资源演示了如何向验证器添加正则表达式方法:

jQuery validate: How to add a rule for regular expression validation?

我还更进一步,编写了一个插件来处理多个范围:

 $(document).ready(function() {

 $.validator.addMethod(
    "ranges",
     function(value, element, ranges) {
        var noUpperBound = false;
        var valid = false;
        for(var i=0; i<ranges.length; i++) {
            if(ranges[i].length == 1) { 
                noUpperBound = true;
            }
            if(value >= ranges[i][0] && (value <= ranges[i][1] || noUpperBound)) {
                valid = true;
                break;
            }            
        }

        return this.optional(element) || valid;
    },
    "Please check your input."
 );


 $("#myform").validate({
     submitHandler: function(form) {
        if(form && form.submit) form.submit();
     } 
 });

 // range must be between 0 to 25 OR greater than 30
   // represented as an array of size-2 arrays.
 $("#age").rules('add', { ranges: [ [0,25], [31] ] });


 <form id="myform" action="#">
    <span>age</span><input type="text" id="age" name="age" />
    <input type="submit" name="submit" value="submit" />
 </form>

关于jQuery 验证插件 : Value in multiple ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637975/

相关文章:

java - jQuery Ajax 错误解决

php - 是否可以在PHP中转换 “trying to get property of non object”错误?

asp.net - “Failed to enable constraints”错误在我的ASP.Net项目中不断出现(看似随机)

angular - 将字符串转换为 typescript 中的对象?

java - Spring自定义 validator 注入(inject)NullPointerException

c# - Fluent Validation,在 Asp.NET Core 中对列表中的每个项目进行不同的验证

jquery - Angular 2/4 和 jquery 脚本

javascript - $ (">",这个)[1] 是什么意思?

javascript - Gravity Forms 未在 https 下加载,未定义 jQuery

javascript - 如果 Kendo UI 中的值为 null,则设置占位符