【问题标题】:jQuery validation pluginjQuery 验证插件
【发布时间】:2011-04-22 12:10:56
【问题描述】:

我正在使用 jQuery validation plugin 在客户端验证我的表单。我正在为每个具有正则表达式(自定义)属性的 HTML 控件添加一个使用 addMethod 函数的新方法。我的 HTML 控件看起来像。

<input type="text" id="txtInf" name="txtInf" regex="some regular exp" error="check your inf"></input>

$("*[regex]").each(function () {
                  var controlId = $(this).attr('name');    
                  var regex = new RegExp((this).attr('regex'));    
                  var error = $(this).attr('error');    

            $.validator.addMethod(controlId, function (value, element) {

                return this.optional(element) || false;

            }, error);

            $(this).rules("add", { '" + controlId + "': "^[a-zA-Z'.\s]{1,40}$" }); 

            $(this).validate();
        });

这里我将方法名称命名为 controlId,即 txtInf。在下面的行中,我需要提供 txtInf,但我想使用 controlId 变量,因为我想让这个函数成为一个通用函数。但是如果我直接写controlId,它会搜索相同的方法。但添加的方法实际上是 txtInf。所以我需要一些方法通过使用 controlId 变量来概括这条线。

$(this).rules("add", {txtInf: "^[a-zA-Z'.\s]{1,40}$" }); 

【问题讨论】:

    标签: .net javascript jquery validation


    【解决方案1】:

    问题是您不能使用变量名在对象文字中进行引用。当我需要做这样的事情时,我过去所做的是手动创建 JSON 字符串并通过 parseJSON 传递它。这看起来像:

    $(this).rules("add", $.parseJSON('{"' + controlId + '":"^[a-zA-Z\'.\s]{1,40}$" }'); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2011-03-31
      相关资源
      最近更新 更多