带回调的jquery自定义验证方法

标签 jquery jquery-validate

所以我发现您可以添加任何自定义验证逻辑。如果它足够简单那就不是问题,对吧?

$.validator.addMethod('customRule',function(val, el){
    return val > 2;
},'value cannot be smaller than 2');

$('#myInput').rules('add', { customRule : true });

现在,即使您有一些更困难的事情(例如 REST 调用),它仍然可以完成:

$.validator.addMethod('customRule',function(val, el){
    var validator = this;
    $.get('checkValueOnServer',val).done(function(isValid){
        if(!isValid){
           var errors = {}; 
           errors[el.name] = 'server says: value does not look right!';
           validator.showErrors(errors);
        }
        validator.stopRequest(el, isValid);
    })
    return 'pending';
},'');

现在,就我而言,我需要调用带有回调的函数,类似的东西

$.validator.addMethod('customRule',function(val, el){
    var validator = this;
    checkValueOnServer(el, function(isValid){ // so function runs for a few secs and returns a callback with a result 
        if(!isValid){
           var errors = {}; 
           errors[el.name] = 'called function says: value does not look right!';
           validator.showErrors(errors);
        }
        validator.stopRequest(el, isValid);
    });
    return 'pending';
},'');

您看到的只是一个很好的旧回调,而不是deferred对象。所以在后一种情况下如果我打电话

$('form').valid() 它报告它是 true,尽管自定义调用函数报告验证规则未通过并且元素突出显示并显示错误消息。那么出了什么问题呢?告诉这件事的正确方法是什么:表格无效?

最佳答案

使用自定义验证方法时,该函数通常仅返回 truefalse

您仅返回包含文本'pending'的字符串,即使表单通过验证,也会显示required错误消息。您的使用超出了文档的范围...


As per documentation :

method Callback
The actual method implementation, returning true if an element is valid. First argument: Current value. Second argument: Validated element. Third argument: Parameters.

关于带回调的jquery自定义验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091405/

相关文章:

javascript - jquery 单击模拟正在触发但没有事件发生

javascript - stopPropagation 而不阻止默认

javascript - 顶栏断点 - Foundation 5

jQuery 验证 - 错误消息不断重复

针对 twitter bootstrap 按钮组的 jQuery 验证

javascript - jquery:预填充自动完成字段

javascript - 使用 JS HTML 和 CSS 将 "night time"处的图像交换为任何时区?

jquery - 附加到 jquery 验证和 jquery.validate.unobtrusive 中的 showError 函数

jQuery Validation 自定义验证添加无空格验证

jQuery 验证插件。向现有规则添加新规则