【问题标题】:Form validation using RegEx for dynamically added controls使用 RegEx 对动态添加的控件进行表单验证
【发布时间】:2013-04-02 13:16:58
【问题描述】:

我正在使用 Jquery 验证插件来验证网络表单。 控件根据控件类型动态加载。对于某些控件,我需要使用正则表达式进行验证。我需要为每个控件动态传递正则表达式。 我有以下功能,但如何将它推广到需要使用 RegEx 验证的所有控件

            $.validator.addMethod(varcharRegEx, function (value, element) {
              return this.optional(element) || /^[A-Za-z0-9\_]+$/i.test(value);
             }, "Invalid entry, must contain only letters, numbers, or underscore.");

其次,有一种方法可以将错误消息显示为表单末尾的摘要。 我是 Jquery 的新手。请帮忙

【问题讨论】:

  • 要附加到您选择的元素,只需添加一个选择器。
  • 对于不同的控件,我有不同的正则表达式进行验证。我需要在运行时动态添加正则表达式。任何帮助表示赞赏。

标签: jquery asp.net validation jquery-plugins


【解决方案1】:

将自定义data 属性添加到您的控件并使用您的RegEx 填充它。然后您可以在验证函数中读取该值并应用它。

即“装饰”您需要使用某些 css 类进行验证的控件,例如:

<input id="control_1" class="to-validate" 
     data-regex="^[A-Za-z0-9\_]+$" 
     data-error-message="Invalid entry, must contain only letters, numbers, or underscore." />

然后在 jQuery 中将验证器附加到每个:

$(".to-validate").each(function(index, myControl) {

    var regex = $(myControl).data("regex");
    var errorMsg = $(myControl).data("error-message");
    var validatorName = $(myControl).attr("id"); 

    $(myControl).validator.addMethod(validatorName, function(value, element) {
        return this.optional(element) || new RegExp(regex).test(value);
    }, errorMsg);
});

我没有测试过这段代码,所以你可能需要根据你的确切需要对其进行一些调整,但我希望这能给你一个想法。

【讨论】:

  • 验证函数是指插件的addMethod
  • @Floremin myControlindex 应该是什么?
  • .each(function(index, myControl) 基本上是一个for 循环,它遍历所有具有to-validate 类的html 元素的数组。 index 是循环的当前索引,myControl 是数组中的当前 html 元素。在这里查看更多信息:api.jquery.com/jquery.each
猜你喜欢
  • 2021-12-30
  • 1970-01-01
  • 2011-07-13
  • 2013-09-18
  • 2017-08-07
  • 2010-09-29
  • 1970-01-01
  • 2014-08-21
  • 2016-08-01
相关资源
最近更新 更多