检查是否输入了两个字段,并使用jQuery验证最小字符

时间:2014-01-09 08:47:43

标签: jquery jquery-validate

这是我的代码,如下所示。我能够测试是否输入了两个字段中的任何一个。我现在想要的是限制用户只输入1个字段而不是两个字段,如何让用户输入至少3个字符?我尝试添加规则,但它不起作用。我能将if / else语句置于规则之下吗?谢谢。急需帮助。

reg: function() {
            reg_validator = $('.form_validation_reg').validate({
                onkeyup: false,
                errorClass: 'error',
                validClass: 'valid',
                highlight: function(element) {
                    $(element).closest('div').addClass("f_error");
                },
                unhighlight: function(element) {
                    $(element).closest('div').removeClass("f_error");
                },
                errorPlacement: function(error, element) {
                    $(element).closest('div').append(error);
                },
                rules: {     
                        campaign_name: {
                                require_from_group: [1, '.span8']
                        },
                        campaign_name2: {
                                require_from_group: [1, '.span8']
                        }  
                },
                invalidHandler: function(form, validator) {
                    $.sticky("There are some errors. Please correct them and submit again.", {autoclose : 5000, position: "top-right", type: "st-error" });
                }
            })
        }

1 个答案:

答案 0 :(得分:2)

由于jQuery Validation插件用于验证输入的数据,并且验证不会阻止用户将数据输入空字段,因此您可以启用/禁用模糊的相反字段。假设span8类仅用于这两个字段。

$('.span8').on('blur', function () {            
    if ($(this).val() != '') {                  
        $('.span8').not(this).prop('disabled', 'disabled');
    } else {
        $('.span8').not(this).removeProp('disabled');
    }
});

引用OP

  

“如何让用户输入至少3个字符?”

使用minlength规则...

rules: {
    campaign_name: {
        require_from_group: [1, '.span8'],
        minlength: 3
    },
    campaign_name2: {
        require_from_group: [1, '.span8'],
        minlength: 3
    }
}

工作演示:http://jsfiddle.net/htd23/


如果你不想禁用模糊字段而只是想使用验证,这里有一个你可以使用的自定义验证方法......

jQuery.validator.addMethod('notBoth', function (value, element, param) {
    return ((value != '') && ($(param[0]).val() == '') || (value == '') && ($(param[0]).val() != ''));
}, "Please do not fill out both fields");

声明自定义方法......

rules: {
    campaign_name: {
        require_from_group: [1, '.span8'],
        minlength: 3,
        notBoth: ['input[name="campaign_name2"]'] // parameter is the other field
    },
    campaign_name2: {
        require_from_group: [1, '.span8'],
        minlength: 3,
        notBoth: ['input[name="campaign_name"]'] // parameter is the other field
    }
}

替代演示:http://jsfiddle.net/EqF5F/


备注

  • 当您使用onkeyup: false时,在模糊或提交之前,您不会看到minlength规则有效。
  • 我删除了所有回调方法,以便将演示重点放在特定问题上。
  • 当您只将validClasserrorClass设置为默认值时,无需声明。