2016-07-15 5 views
0

Я использую петрушку, и это здорово! Я хочу добавить различные валидаторы программно, в зависимости от языка, используя javascript/JQuery. Когда я жестко запрограммирован так:Проблема с добавлением данных-петля-шаблон программно

<input type="text" id="billingPostalCode" 
name="userInput_billingPostalCode" 
value='<c:out value="${param.billingPostalCode}"></c:out>' 
class="form-control" required="" 
data-parsley-pattern="^\d{5}(?:[-\s]\d{4})?$" 
data-parsley-error-message="Valid Zip/Postal Code Required"></input> 

он отлично работает. Однако, когда я пытаюсь добавить его программно, это не так. У меня есть это в .jsp файле:

<input type="text" id="billingPostalCode" 
value='<c:out value="${param.billingPostalCode}"></c:out>' 
class="form-control" required="" 
data-parsley-error-message="Valid Zip/Postal Code Required"> 
</input> 

И это в .js:

$('#billingPostalCode').attr('data-parsley-pattern', "^\d{5}(?:[-\s]\d{4})?$"); 

атрибут добавляется (я могу осмотреть элемент и увидеть его), но он не проверяет правильно (он считает допустимый ввод недопустимым). Я попытался поместить код JQuery до и после прикрепления петрушку к форме:

[here...] 
$('#paymentInfoForm').parsley(...); 
[and here...] 

Я также экспериментировал с регулярным выражением, якорь и unanchored, упрощенные версии и т.д. Но, как я сказал, регулярное выражение прекрасно работает когда он жестко закодирован.

Может ли быть какое-то вмешательство в JSP? Я что-то упускаю? Заранее спасибо.

+0

Должен работать. Опубликовать рабочий пример ... –

+0

Я пробовал использовать разные регулярные выражения в моем jquery-коде (в частности, я пытался. {5} и \ d {5}). Первый работает, второй - нет, поэтому кажется, что «\ d» вызывает проблемы. –

ответ

0

Я работал вокруг этого, используя [0-9] вместо/d в своем регулярном выражении. Однако, похоже, это ошибка. Это работает, как ожидалось:

$('#billingPostalCode').attr('data-parsley-pattern', "[0-9]{5}(?:[-\s][0-9]{4})?"); 

, но следующий код не будет ничего не проверять и даже сломать жестко закодированную проверку:

$('#billingPostalCode').attr('data-parsley-pattern', "\d{5}(?:[-\s]\d{4})?"); 

Проблема должна быть специфической для JavaScript, так как он работает когда жестко закодирован в файл jsp.