jquery - 使用 jQuery Validate 暂时禁用规则

标签 jquery jquery-validate

我的表单有几个相当复杂的验证规则,我有必要暂时禁用给定的规则,以便稍后启用它。删除它然后再次添加它似乎毫无意义,因此我需要一个工具来禁用和启用验证规则。

最佳答案

从 1.8.1 版本开始,我在“rules”函数中添加了 2 个 case 语句,以便命令 switch 语句如下所示。

switch(command) {
case "add":
    $.extend(existingRules, $.validator.normalizeRule(argument));
    staticRules[element.name] = existingRules;
    if (argument.messages)
        settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
    break;
case "remove":
    if (!argument) {
        delete staticRules[element.name];
        return existingRules;
    }
    var filtered = {};
    $.each(argument.split(/\s/), function(index, method) {
        filtered[method] = existingRules[method];
        delete existingRules[method];
    });
    return filtered;
case "disable":
    if (!argument) {
        return false;
    }
    $.each(argument.split(/\s/), function(index, method) {
        existingRules[method].disabled=true;
    });
    break;
case "enable":
    if (!argument) {
        return false;
    }
    $.each(argument.split(/\s/), function(index, method) {
        existingRules[method].disabled=false;
    });
    break;
}

然后为了实现这一点,在“检查”函数中,我们添加一个条件来检查我们设置的禁用参数的状态。值得注意的是,如果规则从未被禁用/启用,那么该值将是未定义的,我们在这里假设如果其未定义,我们对该规则感到满意。该函数的循环语句现在开始于:

for (var method in rules ) {
    var rule = { method: method, parameters: rules[method] };
    try {
        if (typeof rule.parameters["disabled"] === 'undefined' || rule.parameters["disabled"] == false)
        {
            var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
        } else {
            continue;
        }

就像使用“添加”和“删除”功能一样使用它,例如

$('#email_address').rules("disable", "remote");
$('#email_address').rules("enable", "remote");

我希望这对某人有帮助,我一直在用头撞墙试图到达这里。

关于jquery - 使用 jQuery Validate 暂时禁用规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7714689/

相关文章:

javascript - AJAX 调用后在 Rails 中渲染部分时未定义的表单变量

javascript - jquery 验证不适用于隐藏字段

jquery - 如何使用 jQuery 验证在 AJAX 调用后手动使字段无效

javascript - 通过 Jquery 更改 html5 中的视频(不同质量)文件

javascript - 窗口调整大小时的 jQuery 滚动条不起作用

jQuery Validate - 检查是否需要控件而不触发验证

jquery - Bootstrap 3 验证状态以及使用 Chosen 插件的 JQuery 验证表单

internet-explorer - Internet Explorer 中的 jQuery 加载问题

jquery - jQuery AJAX 之后获取新的窗口高度

javascript - jQuery 导航栏鼠标悬停问题