2010-11-30 3 views
1

Я использую jQuery.validate (с ASP.NET MVC 1.0 и xVal) и пытаюсь переопределить код ошибки по умолчанию, чтобы вместо добавления диапазона ошибок к элементу он добавлял значок изображения ошибки с сообщением об ошибке сам по себе в атрибутах title/alt изображения.Как остановить пользовательскую функцию jQuery.validate.errorPlacement, отображающую несколько сообщений об ошибках?

Я звоню это из головы моей страницы:

jQuery.validator.setDefaults({ 
    errorPlacement: function(error, element) { 
    var errorTag = '<img src="error.png" title="' + error.html() + '" />'; 
    var errorImg = $(errorTag); 
    errorImg.insertAfter(element); 
    } 
}); 

Это, кажется, работает нормально - правильные иконки в нужном месте - но каждый раз, когда Validate() вызывается, это добавление ДРУГОЙ проверки значок в поле, так что вы очень быстро получите десятки значков ошибок рядом с каждым вводом ...

У меня явно отсутствует какой-либо атрибут, который будет информировать плагин validate, что для этого поля уже есть ошибка, но я не могу понять, что ... Я попытался добавить атрибут htmlfor = element.Id, я попытался добавить класс проверки правильности поля, но я не получаю anyw здесь и сейчас я застрял

Спасибо,

-D-

ответ

0

Проблема заключается в том, что jQuery.validate использует элемент ошибки сказать, является ли или нет уже находится ошибка. Ваш код не добавляет элемент, поэтому для каждого вызова он снова добавляет ваше изображение.

Чтобы увидеть это, выполните следующие действия:

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 не будет вызываться снова, если присутствует ошибка, поэтому ваш errorTag не изменится. Аналогично, когда добавляется метка успеха, изображение не исчезает автоматически.

Возможно, существует способ сделать это с использованием методов jQuery.validate, но, честно говоря, это просто просмотр кода. Я все еще пытаюсь понять, как все это обрабатывается.

3

Вы должны проверить, существует ли оно:

jQuery.validator.setDefaults({ 
    errorPlacement: function(error, element) { 
    var errorTag = '<img src="error.png" id="myTag" title="' + error.html() + '" />'; 
    var errorImg = $(errorTag); 

    if ($('#myTag').length == 0) { 
     errorImg.insertAfter(element); 
    } 
    } 
}); 
-1

я разместил пост here блог, который объясняет, как идти об этом от начала до конца как для клиента и на стороне сервера проверки с помощью проверки JQuery. Надеюсь, поможет!

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

  • Нет связанных вопросов^_^