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

Trouble adding data-parsley-pattern programmatically

本文关键字:模式 遇到 问题 编程 方式 添加 数据      更新时间:2023-09-26

我正在使用欧芹,它很棒! 我想使用 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文件中时起作用。