开发者

jQuery custom validation rule with backslash

开发者 https://www.devze.com 2023-02-13 10:56 出处:网络
I\'m trying to create a custom jquery validation rule to perform a regex on the value on a textbox. Here is the rule:

I'm trying to create a custom jquery validation rule to perform a regex on the value on a textbox. Here is the rule:

$.validator.addMethod("validateRegExp", function (value, element, pattern) {

            console.debug("pattern: " + pattern);

            var regex = new RegExp(pattern);
            var isMatch = regex.test(value);

            console.debug("value: " + value);
            console.debug("result: " + isMatch);

            return isMatch;
        });

And here is the html:

<input type="text" class="{ "validateRegExp": "^\d{1,2}:\d{2}(\s)*(AM|am|PM|pm)$", messages: { "validateRegExp": 开发者_如何转开发"Invalid Time" } }" maxlength="8" value="8:00 AM" name="TuesdayStartTime" id="TuesdayStartTime" />

For some reason, when it calls the custom validateRegExp method, the pattern attribute is set to:

^d{1,2}:d{2}(s)*(AM|am|PM|pm)$

As you can see, the backslashes have been removed. I can even put in 2 or 3 backslashes where each one should go and still when it goes into this method, all backslashes are filtered out. How do I get this working?


The answer was to put in 4 back slashes for each 1 that I want in the regex, as it gets parsed twice, once when programmatically created, and secondly by jquery.metadata.

title.append($("<div class='section'><input id='" + id + "_EndTime' name='" + id + ".EndTime' value='" +
            (day.EndTime ? day.EndTime : "") + "' type='text' maxlength='8' " +
            utils.addValidationRuleHtml("validateRegExp", "^\\\\d{1,2}:\\\\d{2}(\\\\s)*(AM|am|PM|pm)$", "Invalid Time") + " /></div>"));


You seem to be trying to have double-quotes within double-quotes. Change some to single quotes. e.g.

<input type="text"
       class="{ validateRegExp: '^\d{1,2}:\d{2}(\s)*(AM|am|PM|pm)$',
                messages: { validateRegExp: 'Invalid Time' }
              }"
       maxlength="8"
       value="8:00 AM"
       name="TuesdayStartTime"
       id="TuesdayStartTime" />

Not sure if that will help (I've never seen a class specified this way before) but it can't make it any worse.

0

精彩评论

暂无评论...
验证码 换一张
取 消