1

一旦我插入errorPlacement:函数,它就会破坏代码。单击提交时不会进行验证。有人可以帮忙吗?

如果我删除此功能,验证工作正常。

进口:-

<script type="text/javascript" src="/MyApp/js/jquery.js"></script>
<script type="text/javascript" src="/MyApp/js/jquery.validate.min.js"></script>

脚本:-

    $(document).ready(function(){
        $("#post-an-ad").validate({
            rules:{
                articleTitle:{
                    required: true,
                    minlength: 5
                },            
                dateRequested:{
                   required: true,
                    date: true
                },
                articleLocation:{
                    required: true,
                    minlength: 8
                },
                'user.agent': "required",
                'user.firstName': "required",
                'user.emailId':{
                    required: true,
                    email: true
                },
                'user.phone':{
                    required: true,
                    minlength: 8,
                    number: true
                }
            },
             errorPlacement: function(error, element) {
             alert("This alert is not popping");
             },
            submitHandler: function(form){      
            // doing nothing on a submit.
                return false;
            }
        });
    });
4

1 回答 1

0

我将您的代码放入 jsFiddle 中,它使我的浏览器崩溃了。您的验证代码很好......但是,在函数alert()内部放置一个不是errorPlacement:

errorPlacement: function(error, element) {
    alert("This alert is not popping");  //--- this is causing infinite loop
},

错误触发警报,然后当您点击“确定”警报时,它会立即重新触发,因为表单仍然无效,该过程重复......这陷入了不间断警报的无限循环。它使我的 Safari 崩溃,因为我无法在没有立即弹出下一个警报的情况下关闭警报。我确信其他浏览器正在以自己的方式处理这个循环。

其他一切工作正常。

取消注释违规行需您自担风险:

http://jsfiddle.net/59bsp/


这是errorPlacement:完美运行的解决方案......

errorPlacement: function(error, element) {
    error.insertAfter(element);  //- this line demonstrates the default behavior
},

http://jsfiddle.net/59bsp/1/

于 2012-10-19T15:52:39.867 回答