Пользовательское правило проверки jQuery с обратной косой чертой - PullRequest
0 голосов
/ 24 февраля 2011

Я пытаюсь создать собственное правило проверки jquery, чтобы выполнить регулярное выражение для значения в текстовом поле. Вот правило:

$.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;
        });

А вот 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" />

По какой-то причине, когда он вызывает пользовательский метод validateRegExp, атрибут pattern устанавливается на:

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

Как видите, обратные слеши были удалены. Я даже могу вставить 2 или 3 обратных слеша, куда каждый должен идти, и все же, когда он входит в этот метод, все обратные слеши отфильтровываются. Как мне заставить это работать?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2011

Ответ заключался в том, чтобы ввести 4 обратных слеша для каждого 1, который я хочу в регулярном выражении, так как он анализируется дважды, один раз при программном создании, а затем - 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>"));
0 голосов
/ 24 февраля 2011

Вы, кажется, пытаетесь использовать двойные кавычки в двойных кавычках. Измените некоторые на одинарные кавычки. например,

<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" />

Не уверен, поможет ли это (я никогда не видел класс, указанный таким образом ранее), но это не может ухудшить ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...