Проблема в том, что jQuery.validate использует элемент error, чтобы определить, была ли ошибка уже помещена.Ваш код не добавляет элемент, поэтому при каждом вызове он добавляет ваше изображение снова.
Чтобы увидеть это, сделайте следующее:
jQuery.validator.setDefaults({
errorPlacement: function(error, element) {
error.insertAfter(element); // Add the error element
var errorTag = '<img src="error.png" title="' + error.html() + '" />';
var errorImg = $(errorTag);
errorImg.insertAfter(element);
}
});
Теперь вы увидите изображение, добавленное только один раз, Однако , errorPlacement не вызывается снова при наличии ошибки, поэтому ваш тег error не изменится.Аналогично, когда добавляется метка успеха, изображение не исчезает автоматически.
Может быть способ сделать это, используя методы jQuery.validate, но, честно говоря, это просто просмотр кода.Я все еще пытаюсь выяснить, как именно все это обрабатывается.