使用replaceWith仅显示一条验证错误消息

时间:2010-03-22 21:53:39

标签: javascript jquery

我目前正在使用jQuery validation plugin,我想在表单本身之前只显示一条错误消息。现在,验证显示所有错误消息在彼此堆叠时显示,正如您在我的实例中所见:

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
    }

有人知道怎么做吗?这是仅显示一条错误消息的最佳方式吗?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

听起来像是一个可行的解决方案,但replaceWith会将div替换为错误label,并且在所有后续调用中都会失败,因为找不到div

这应该这样做

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

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

答案 1 :(得分:0)

将其作为演示文稿问题处理,只使用CSS隐藏非第一个错误元素;)