簡體   English   中英

帶有反斜杠的jQuery自定義驗證規則

[英]jQuery custom validation rule with backslash

我正在嘗試創建一個自定義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 | pm)$

如您所見,反斜杠已被刪除。 我什至可以在每個方法應放入的地方添加2或3個反斜杠,但是當進入此方法時,所有的反斜杠都會被過濾掉。 我該如何工作?

您似乎正在嘗試在雙引號中包含雙引號。 將一些更改為單引號。 例如

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

不知道這是否會有所幫助(我以前從未見過這樣指定過的類),但它不會使情況變得更糟。

答案是要在正則表達式中為每個1加上4個反斜杠,因為它會被解析兩次,一次是通過編程創建的,第二次是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>"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM