我有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>
这是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));
答案 0 :(得分:4)
您可能只需要在输入中添加特殊属性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;
},
文件: http://parsleyjs.org/doc/#psly-usage-field 引用:
默认情况下,如果字段不是必需的并且为空,则不验证该字段。 通过添加data-parsley-validate-if-empty,甚至可以进行验证 如果字段为空。如果你需要一些自定义验证器,这很有用 在字段为空时检查特定内容。
答案 1 :(得分:1)
只需为要阻止提交为空的每个输入添加属性“必需”。例如:
<input type="text" name="phone1" id="phone1" required />
答案 2 :(得分:0)
您应该在验证前听取事件:
$.listen('parsley:field:validate', function(){
# your validation here
})