jQuery验证this.optional(element)总是false

时间:2010-04-23 13:17:34

标签: jquery jquery-validate

我正在尝试熟悉jQuery验证自定义方法,似乎有点困惑。为什么我的自定义方法中的this.optional(元素)总是返回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。 但是这个选项(el)总是假的:(

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

1 个答案:

答案 0 :(得分:8)

如果值不为空,则

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

相关问题