我正在使用欧芹,它太棒了!我想以编程方式添加不同的验证器,具体取决于区域设置,使用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})?$");
添加了属性(我可以检查元素并查看它),但它没有正确验证(它将有效输入视为无效)。我已尝试在将parsley附加到表单之前和之后放置JQuery代码:
[here...]
$('#paymentInfoForm').parsley( ... );
[and here...]
我还尝试了正则表达式,锚定和非锚定,简化版本等。但正如我所说,当正则表达式被硬编码时,它正常运行。
是否会对JSP造成一些干扰?我错过了什么吗?提前谢谢。
答案 0 :(得分: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文件时有效。