空字段的触发验证

ASH*_*ASH 1 parsley.js

我有 3 个电话字段,必须至少填写其中一个。问题是当字段为空时欧芹验证不起作用,因此它不会显示任何错误。即使字段为空,如何触发验证?

这是 HTML:

<form parsley-validate id="demo-form">
Phone1 <input type="text" name="phone1" id="phone1" /><br>
Phone2 <input type="text" name="phone2" id="phone2" /><br>
Phone3 <input type="text" name="phone3" id="phone3" parsley-phones /><br>
<input type="button" value="submit" onclick="$('#demo-form').parsley('validate');">
</form>
Run Code Online (Sandbox Code Playgroud)

这是Javascript:

(function ($) {
    window.ParsleyConfig = $.extend( true, {}, window.ParsleyConfig, {
        validators: {
            phones: function () {
                return {
                    validate: function(val) {
                        if($("#phone1").val()=='' && $("#phone2").val()=='' && $("#phone3").val()=='')
                            return false;
                        else
                            return true;
                    }
                    , priority: 100
                }
            }
        }
        , messages: {
                phones: "At least one phone number is required."
        }
    });
}(window.jQuery || window.Zepto));
Run Code Online (Sandbox Code Playgroud)

use*_*r44 5

您可能只需data-parsley-validate-if-empty要向输入添加一个特殊属性。

这是 parsley.js 源代码的相关部分:

// An empty optional field does not need validation
needsValidation: function needsValidation(value) {
  if ('undefined' === typeof value) value = this.getValue();

  // If a field is empty and not required, it is valid
  // Except if `data-parsley-validate-if-empty` explicitely added, useful for some custom validators
  if (!value.length && !this._isRequired() && 'undefined' === typeof this.options.validateIfEmpty) return false;

  return true;
},
Run Code Online (Sandbox Code Playgroud)

和文档:http : //parsleyjs.org/doc/#psly-usage-field 引用:

如果字段不是必需的且为空,则默认情况下不会对其进行验证。通过添加 data-parsley-validate-if-empty,即使字段为空,也会进行验证。如果您需要一些自定义验证器来在字段为空时检查特定内容,则很有用。