以编程方式添加数据欧芹模式时遇到问题

Trouble adding data-parsley-pattern programmatically

我正在使用 Parsley,它很棒!我想根据语言环境使用 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...]

我也尝试过正则表达式、锚定和非锚定、简化版本等。但就像我说的,正则表达式在硬编码时工作得很好。

JSP会不会有一些干扰?我错过了什么吗?提前致谢。

我通过在正则表达式中使用 [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 文件中时有效。