【问题标题】:jQuery validation this.optional(element) always falsejQuery 验证 this.optional(element) 总是假的
【发布时间】:2010-04-23 13:17:33
【问题描述】:

我正在尝试熟悉 jQuery 验证自定义方法,但似乎有点困惑。为什么我的自定义方法中的 this.optional(element) 总是返回 false?

这是我的代码示例:

<script type="text/javascript">
    $(document).ready(function(){
        $.validator.addMethod('customemethod', function(val, el){
            return this.optional(el) || false;
        }, 'custom method says its INVALID !');
        $('#myform').validate({ignore: '*[ignore]'});
        $('#validate').click(function(){
            $('#result').text($('#myform').validate().form());
            return false;
        });
    });
</script>
<form id="myform">
    <div><input type="text" id="customfield" name="customfield" /></div>
    <script type="text/javascript">
        $(document).ready(function(){$('#customfield').rules('add', { required: true, customemethod: true } ) } );
    </script>
    <div><input type="text" id="customfield2" name="customfield2" /></div>
    <script type="text/javascript">
        $(document).ready(function(){$('#customfield2').rules('add', { required: false, customemethod: true } ) } );
    </script>

    <div id="result"></div>
    <input id="validate" type="submit" />
</form>

如果元素不是必需的并且它的值不为空 - 调用验证方法并且在这种情况下我需要返回 true。 但是 this.optional(el) 总是假的 :(

我该如何解决?如何检查自定义方法中是否需要元素? 谢谢。

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    optional 如果值不为空,则为 false,因此您可以对字段执行验证,但前提是它不为空。例如,如果电子邮件地址是可选的,则必须验证格式,但前提是提供了值。 optional 如果未提供 value,则返回 true,因此不执行其余的评估。这就是这种方法的目的。如果您需要 value 不为空,则它必须是必需的。如果您需要它是否为空,则根本不需要验证。

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 2018-02-25
      • 2014-08-22
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多