jQuery验证 - errorPlacement正在破坏代码

时间:2012-10-19 15:27:12

标签: jquery jquery-validate

一旦插入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;
            }
        });
    });

1 个答案:

答案 0 :(得分: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/