【问题标题】:Integrating custom function and rule using JQuery validator plugin使用 JQuery 验证器插件集成自定义函数和规则
【发布时间】:2014-04-14 14:36:17
【问题描述】:

我有一个带有电子邮件字段的表单。
作为验证的一部分,我想排除某些域(例如 gmail、yahoo 等)

我发现以下函数应该搜索子字符串,我认为这是搜索我的电子邮件字符串的好选择: jquery/javascript check string for multiple substrings:

function isSubStringPresent(str){
    for(var i = 1; i < arguments.length; i++){
        if(str.indexOf(arguments[i]) > -1){
            return true;
        }
    }    
    return false;
}    

isSubStringPresent('myemail', 'gmail', 'yahoo', ...)

我对如何将此功能与 jquery 验证器插件集成感到困惑。

请看下面:

我的表单下方有以下内容:

$(document).ready(function(){ 
    $.validator.addMethod(
                    "wrong_domain",
                    THE isSubStringPresent FUNCTION SHOULD BE INSERTED HERE SOMEHOW...                    
                    },
                    'Not an acceptable email' );

    $.validator.classRuleSettings.wrong_domain = { wrong_domain: true};    

$('#registration-form').validate({
        rules: {
           FirstName: {
            required: true,
          },

           Email: {
            required: true,
            email: true,
            wrong_domain: true
          },

谁能教我怎么做?

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

    尝试使用apply将多个排除域传递给验证函数:

    var excludes = ['myemail', 'gmail', 'yahoo'];
    $.validator.addMethod(
        "wrong_domain",
        function(value, element) { 
            // take a shallow copy of excludes
            var myArguments = excludes.slice(0);
            // add value to the front of the arguments
            myArguments.unshift(value);
            // use myArguments as the arguments array for isSubStringPresent
            return !isSubStringPresent.apply(this, myArguments);
        },
        'Not an acceptable email' );
    

    这是一个示例Fiddle。这将在每个 keypress 事件之后验证输入。

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2018-03-02
      • 2011-02-07
      • 2016-04-10
      • 2017-09-12
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多