空字段的触发验证

时间:2014-01-21 01:15:56

标签: 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>

这是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));

3 个答案:

答案 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
})

http://parsleyjs.org/doc/index.html#psly-events-usage