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

发布于 2024-08-30 00:16:02 字数 1372 浏览 1 评论 0原文

我正在尝试熟悉 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 :(

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

I'm trying to get familiar with jQuery validation custom methods and seems to get confused a bit. why this.optional(element) inside my custom method always returns false?

here is an example of my code:

<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>

in case if element is not required and it's value is not empty - validation method is called and i need to return true in this case.
But this.optional(el) is always false :(

How can i solve it ? How can i check if element is required or not inside custom method?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十六岁半 2024-09-06 00:16:02

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

optional is false if the value is not empty, so you can perform validation on the field, but only if it's not empty. For example, if the e-mail address is optional, you have to validate the format, but only if value is provided. optional returns true if value is not provided, so the rest of the evaluation is not performed. This is the purpose of this method. If you need value not to be empty, it have to be required. if you need it either empty or not, you do not need validation at all.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文