2010-03-22 66 views
0

我目前正在使用jQuery validation plugin,我想在窗体本身之前只显示一条错误消息。眼下验证,说明每个人的顶部所有的错误消息,因为它们堆起来,因为你可以在我的活生生的例子看:只显示一个使用replaceWith的验证错误消息

http://timkjaerlange.com/foobar/stack-stuff/validate-test.html

这是我目前的jQuery:

$(document).ready(function() { 
    $("form").validate({ 
    rules: { // bunch of rules here, left out to keep it simple }, 
    messages: { // messages goes here }, 
    errorElement: 'div', 
    errorClass: 'error', 
    errorPlacement: function(error, element) { 
     error.insertBefore('form'); // this is what I've got 
    } 
    }); 
}); 

但我只是想显示最新的错误信息,所以与下一个我想要做这样的事情,而不是来取代以前的错误:

errorPlacement: function(error, element) { 
     $('div').replaceWith(error); // trying to replace the prev error 
    } 

有人知道如何做到这一点?这是仅显示一个错误消息的最佳方式吗?

任何帮助,高度赞赏。

回答

1

听起来像一个可行的解决方案,但replaceWith将与错误label更换div和没有div发现在所有后续调用会失败。

这应该这样做

$('div').empty().append(error); 

只是一个方面说明。这可能会导致不需要的行为。试想一下,如果3个字段无效。将生成3个错误标签,并将它们放在这个内部(相互覆盖)。因此只有最后一个标签是可见的。但是,当用户修复显示的错误时会发生什么?尽管2个字段仍然无效,但不会显示任何错误。

+0

感谢迅速答复,这个论坛是最好的! :) 我明白你的意思了,最初我使用CSS隐藏标签,因为它们堆叠起来,但它是一个黑客,并不漂亮。 我想我想显示的是最新的错误信息,然后当受影响的输入字段有效时,我想在堆栈中显示以前的错误信息 - 如果它对应的输入字段仍然无效。 顺便说一句:试图实施你的解决方案,但它没有工作,现场示例在这里: http://timkjaerlange.com/foobar/stack-stuff/validate-test2.html – timkl 2010-03-22 22:34:14

0

新政它作为一个演示问题,只是隐藏使用CSS非第一个错误元素;)

+0

这是我最初做的,但我遇到了一些奇怪的问题。我的例子的CSS版本: http://timkjaerlange.com/foobar/stack-stuff/validate-test3.html 它的工作原理,但这是在CSS中做一个作弊,我侦察;) – timkl 2010-03-22 22:43:09

+0

奇怪的问题是,如果我正确填写表单,然后编辑输入字段为无效,然后又回到有效,那么最后的错误消息仍然显示。 – timkl 2010-03-22 22:48:56

相关问题