如何用Parsley验证值的组合?

时间:2014-11-16 15:15:56

标签: parsley.js

我正在尝试为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?使用欧芹进行多字段验证的推荐方法是什么?

1 个答案:

答案 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();