jQuery验证此。可选(元素)始终为false

jQuery验证此。可选(元素)始终为false,jquery,jquery-validate,Jquery,Jquery Validate,我试图熟悉jQuery验证自定义方法,但似乎有点困惑。为什么自定义方法中的这个.optional(元素)总是返回false 下面是我的代码示例: <script type="text/javascript"> $(document).ready(function(){ $.validator.addMethod('customemethod', function(val, el){ return this.optional(el) ||

我试图熟悉jQuery验证自定义方法,但似乎有点困惑。为什么自定义方法中的这个.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>

$(文档).ready(函数(){
$.validator.addMethod('customemethod',函数(val,el){
返回此项。可选(el)| | false;
},'自定义方法表示其无效!');
$('#myform')。验证({ignore:'*[ignore]'});
$(“#验证”)。单击(函数(){
$('#result').text($('#myform').validate().form());
返回false;
});
});
$(document.ready(function(){$('#customfield').rules('add',{required:true,customemethod:true}));
$(document.ready(function(){$('#customfield2').rules('add',{required:false,customemethod:true}));
若元素不是必需的,并且它的值不是空的,那个么将调用验证方法,在这种情况下,我需要返回true。 但这个.optional(el)总是错误的:(

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

可选
如果值不为空,则为false,因此您可以在字段上执行验证,但前提是该字段不为空。例如,如果电子邮件地址为可选,则必须验证格式,但前提是提供了值。
可选
如果未提供值,则返回true,因此剩余的求值为true未执行。这是此方法的目的。如果需要值不为空,则必须为空。如果需要值为空或不为空,则根本不需要验证