我怎样才能有一个动态的.add方法来进行jQuery Unobtrusive验证?

时间:2015-05-09 15:37:17

标签: jquery asp.net jquery-validate unobtrusive-validation

我目前正在使用jQuery unobtrusive validation和ASP.NET MVC。

我已经设置了我的后端代码,这样就可以向给定的输入字段发送多个正则表达式验证,结果如下:

<input class="form-control" data-val="true" data-val-alphanumericonly="This field can only contain alphanumerical characters." data-val-alphanumericonly-pattern="^[a-z0-9àâäçéèêëïöôûü\s]+$" data-val-nospaces="This field can't contain spaces." data-val-nospaces-pattern="^\S+$" id="User_UserName" name="User.UserName" placeholder="Username" type="text" value="">

我现在可以通过在jquery.validate.unobtrusive.js文件中添加以下代码来完美地完成这项工作

$jQval.addMethod("nospaces", function (value, element, params) {
    var match;
    if (this.optional(element)) {
        return true;
    }

    match = new RegExp(params).exec(value);
    return (match && (match.index === 0) && (match[0].length === value.length));
});
adapters.addSingleVal("nospaces", "pattern");
$jQval.addMethod("alphanumericonly", function (value, element, params) {
    var match;
    if (this.optional(element)) {
        return true;
    }

    match = new RegExp(params).exec(value);
    return (match && (match.index === 0) && (match[0].length === value.length));
});
adapters.addSingleVal("alphanumericonly", "pattern");

我唯一的问题是,我不想单独为每个规则执行此操作,因为每次都是完全相同的代码。我想知道是否有办法以动态的方式做到这一点。

我正在考虑使用前缀,然后使用相同的方法一次,响应前缀而不是整个名称。 所以有regex_nospaces和regex_alphanumericalonly并且函数为$ jQval.addMethod(&#34; regex _ *&#34;,...

PS:我已经尝试使用相同的名称,但我必须为.Net

指定唯一的名称

0 个答案:

没有答案