jQuery 验证 this.Optional(element) 始终为 false

标签 jquery jquery-validate

我正在尝试熟悉 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) 始终为 false :(

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

最佳答案

如果值不为空,

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

关于jQuery 验证 this.Optional(element) 始终为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698807/

相关文章:

javascript - 在 contenteditable 中将插入符号放在图像之前/之后

javascript - 如何仅在鼠标移动时触发mousemove事件

javascript - 如何强制 jQuery Validate 检查数据库中的重复用户名?

php - jquery-validate - php 嵌入式 html 表单

javascript - 360 度图像旋转指示器

应用 jQuery 后 php header 不起作用

javascript - 响应式 2 列 Div 不起作用

jquery - 验证不会通过ajax检查提交表单

javascript - Jquery 验证正则表达式不起作用

jquery - 更新 'real time'中的验证摘要