我正在尝试为Parsley的phonenumbers写一个验证器。电话号码表单小部件由两个字段组成:
<div>
<select name="country">
<option value="DE">Germany</option>
<option value="FR">France</option>
</select>
<input type="tel" name="number" data-parsley-phonenumber>
</div>
我使用的验证功能如下:
function validatePhoneNumber(country, number) {
// return true if valid else false.
}
我知道文档中的Custom Validator example,但它似乎只有在我将国家/地区选择字段的全局选择器硬编码到验证器属性data-parsley-phonenumber='["global-selector-here"]'
如果没有这样的全局选择器,有没有办法解决这个问题?或者更具体:有没有办法访问验证器功能中的ParsleyField.$element
?使用欧芹进行多字段验证的推荐方法是什么?
答案 0 :(得分:0)
我会按照您提到的方式(使用data-parsley-phonenumber="#country"
然后使用requirement
参数访问该值)来执行此操作,如下所示:
<input type="tel" name="number" data-parsley-phonenumber="#country" />
<script>
$('#myForm').parsley();
window.ParsleyValidator
.addValidator('phonenumber', function (value, requirement) {
var select = $(requirement).parsley().$element;
// call your function with the text of the selected option
return validatePhoneNumber(select.find(":selected").text(), value);
}, 32)
.addMessage('en', 'phonenumber', 'En message');
</script>
如果您不想这样做,可以访问addValidator
内的ParlseyField对象,如下所示:
<input type="tel" name="number" data-parsley-phonenumber />
<script>
$('#myForm').parsley();
window.ParsleyValidator
.addValidator('phonenumber', function (value, requirement) {
var select = $("select[name=country]").parsley().$element;
// call your function with the text of the selected option
return validatePhoneNumber(select.find(":selected").text(), value);
}, 32)
.addMessage('en', 'phonenumber', 'En message');
</script>
请注意,在addValidator
之后,您需要确保定义$('#myForm').parsley();
。