【问题标题】:jQuery Plugin: : Validate/Validation - errorPlacement isn't executed... (Animation)jQuery Plugin: : Validate/Validation - errorPlacement 未执行...(动画)
【发布时间】:2011-12-29 15:32:13
【问题描述】:

我正在使用最新的 jQuery 库和 jquery validate 插件来验证某些表单:

我在页脚中放置了一些表单来验证。一旦显示一些错误消息,我的页脚就应该被动画和拉伸。 验证工作正常,只是根本不调用 errorPlacement。 我也读过(这里:jQuery Validation errorPlacement ),那 validate() 已经有一个 errorPlacement 默认操作,应该被我的覆盖。 (我猜用下面的代码我的消息不会再显示了,对吧?

我尝试过(当然还有其他元素(消息/规则):

$(document).ready(function(){  //.ready -> steht erst nach dem Laden des DOMs zur Verfügung
 $("#nlForm").validate({

 debug: true,
 onfocusout: false,
 onKeyUp: false,
 errorLabelContainer: $("#results"),
 wrapper: "li", //wrapping the errormessages in <li>

 rules: { }, 
 messages: { },

 errorPlacement: function( ) {
    $("#footer").animate({
    height: "300px",
 }, 1500 );
 },

 submitHandler: function(form) {
    $('#results').css('display', 'none') //hides my results-div in the beginning

    $("#footer").animate({
      height: "300px",
    }, 1500 );

    var docHeight = $(document).height(); 
    var windowHeight = $(window).height(); 
    var footerheight = 70; //additional pixels of stretched footer
    var scrollPos = docHeight - windowHeight + footerheight; 

    $('html, body').animate({ //scrolling down
       scrollTop: scrollPos+'px'
    }, 1500);

    $.post('/process.php', $("#nlForm").serialize(), function(data) {
       $('#results').html(data); 
    });

 $('#results').fadeIn(1500); //fades in my results-div

 }
 });
});

它不会给我任何错误,但它也没有动画。 我不知道为什么我的 errorPlacement 函数没有被调用。 (我也尝试添加

document.write('hi there')

看看函数是否被调用。但它没有......

如果有人可以发布一些有效的简单示例,我将非常高兴。 或者告诉我我可以改变什么......

此外,我还打算为错误的外观制作动画。知道如何实现吗? 我必须得到即将在我的结果 div 中生成的标签对象。 我该如何解决这个问题?

已经谢谢了

干杯

(顺便说一句。第一次发错地方了..)

-------不幸的是我还不能发布任何答案,所以我必须编辑我的帖子------- 答:

感谢您的回答; 到 1.;我知道我只是省略了它们..

rules: {
        nlName: {
            rangelength: [3, 25], // muss zwischen 3 und 25 zeichen lang sein.
            required: true,
            notName: true,
        },
        nlEmail: {
            required: true,
            email: true,  //has to be a valid email, returns true if so.
        }
    }, //ohne Komma gehts nicht...
    messages: {
        nlName: {
   required: "Bitten geben Sie einen Namen ein",
   notName: "Ihr Name lautet nicht 'Name'!",
   rangelength: "Ihr Name muss zwischen 3 und 25 Zeichen lang sein.",
    },
        nlEmail: "Ihre Emailadresse scheint ungültig zu sein",
    },

因为它主要是德语,这部分效果很好。 我不明白你所说的“是形式”是什么意思? 你的意思是没有代码将错误放在任何地方? 没错,我直到现在才这样做。我通过正常的消息显示方式做到了这一点。 但是我的错误仍然显示是暗示我的 errorPlacement 没有被正确调用,不是吗?

只有在一切正常的情况下才会调用 submitHandler,这一点很清楚。 我只做了两次动画。曾经有地方显示由我的 process.php 生成的最终消息“成功订阅 blabla” 并且仅在必须显示错误时才显示一次...

好吧,我一定会看看这个 invalidHandler。暂时谢谢。

【问题讨论】:

    标签: jquery plugins validation errorplacement


    【解决方案1】:

    我注意到您的代码中有两点:

    1. 您的规则和消息为空。
    2. errorPlacement 的形式为:function(error, element) { } 如果您希望它出现,您需要将error 对象放置在页面上的某个位置。表单上的每个错误都会调用此方法,因此我认为这不是您想要实现的目标。

    我建议您使用invalidHandler 选项。这允许您在表单上出现验证错误时执行动画。

    编辑:注意:submitHandler 被调用如果表单上没有验证错误

    【讨论】:

    • 由于时间限制,我还不能回答。所以我不得不通过编辑我的帖子来发布我的答案。请在那里阅读...
    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多