2010-03-22 3 views
0

В настоящее время я работаю с jQuery validation plugin, и хочу показать только одно сообщение об ошибке перед самой формой. Сейчас проверка показывает все ошибки-сообщения поверх друг друга, как они складывают, как вы можете увидеть в моем живом примере:Показать только одно сообщение об ошибке проверки using 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 заменит div с ошибкой label и потерпит неудачу на все последующие вызовы, как нет div не найден.

Это должно сделать это

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

Просто примечание стороны. Это, вероятно, приведет к нежелательному поведению. Просто подумайте, что произойдет, когда, например, 3 поля недействительны. Создаются 3 метки ошибок, и вы помещаете их внутри этого даже (переписывая друг друга). Таким образом, видна только последняя метка. Но что происходит, когда пользователь исправляет указанную ошибку? Ошибка будет отображаться, хотя 2 поля по-прежнему недействительны.

+0

Спасибо за быстрый ответ, этот форум является лучшим! :) Я понимаю, что вы имеете в виду, изначально я использовал CSS, чтобы скрыть ярлыки, когда они складывались, но это был взлом и совсем не красивый. Я предполагаю, что я хочу показать последнее сообщение об ошибке, а затем, когда поврежденное поле ввода является допустимым, я хочу показать предыдущее сообщение об ошибке в стеке - если это соответствующее поле ввода по-прежнему недействительно. Btw: попытался реализовать ваше решение, но оно не сработало, вот пример live: http://timkjaerlange.com/foobar/stack-stuff/validate-test2.html – timkl

0

Рассказать об этом как о проблеме презентации и просто скрыть элементы, не связанные с первым элементом, используя CSS;)

+0

Это то, что я сделал изначально, но я столкнулись с некоторыми странными проблемами. Была ли CSS-версия моего примера: http://timkjaerlange.com/foobar/stack-stuff/validate-test3.html Это работает, но это своего рода обман, чтобы сделать это в CSS, я заново;) – timkl

+0

Странная проблема заключается в том, что если я правильно заполню форму и затем изменим поля ввода, чтобы они были недействительными, а затем снова вернулись к действию, то последнее сообщение об ошибке все еще отображается. – timkl

Смежные вопросы