2011-01-06 5 views
27

Я использую плагин проверки jQuery и хочу отключить созданный элемент или контейнер, чтобы он отображал сообщение об ошибке.Проверка jQuery - Скрыть сообщение об ошибке

В принципе, я хочу, чтобы элемент ввода с ошибкой имел класс ошибок, но НЕ создавал дополнительный элемент, содержащий сообщение об ошибке.

Возможно ли это?

Я только что подумал об обходном пути CSS, но на самом деле он не фиксирует тот факт, что элемент все еще создается?

<style> 
label.simpleValidationError {display: none !important; } 
</style> 
+1

JQuery просто сам по себе не отображать или создавать какие-либо сообщения об ошибках, вам придется пойти немного более подробно, что вы делаете и что вы используете для достижения этой цели – Hannes

+1

К сожалению, я с использованием плагина проверки jQuery: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – Sjwdavies

+0

~ Это все еще не очень много дополнительной информации, хотя это и разъясняет некоторые вещи. Что вы делаете, когда создаете валидатор (параметры мудрые) и как вы обрабатываете данные, которые он вам дает? – jcolebrand

ответ

5

Вы можете установить showErrors опции в функцию, которая выполняет только элемент подсветки:

$("selector").validate({ 
    showErrors: function() { 
     if (this.settings.highlight) { 
      for (var i = 0; this.errorList[i]; ++i) { 
       this.settings.highlight.call(this, this.errorList[i].element, 
        this.settings.errorClass, this.settings.validClass); 
      } 
     } 
     if (this.settings.unhighlight) { 
      for (var i = 0, elements = this.validElements(); elements[i]; ++i) { 
       this.settings.unhighlight.call(this, elements[i], 
        this.settings.errorClass, this.settings.validClass); 
      } 
     } 
    } 
}); 

Это в значительной степени опирается на внутренностях плагина Validation, хотя, так что это, вероятно, не безопасно. Лучше всего, чтобы плагин выставил метод defaultHighlightElements() так же, как и для defaultShowErrors(), но это не тот случай (пока).

69

Используйте опцию Validator errorPlacement с пустой функции:

$("selector").validate({ errorPlacement: function(error, element) {} }); 

Это эффективно не помещает сообщения об ошибках нигде.

+0

Работал для меня !! – Ryan

+1

Не работает для меня :( – Jonathan

+0

+1 Приятное и краткое решение этой проблемы! – Jonny

5

Вы также можете использовать этот код:

jQuery.validator.messages.required = ""; 

$("selector").validate(); 
2

Я тоже была такая же проблема. Мне не нужны сообщения об ошибках, а только основные моменты входных данных формы, которые требуют внимания. Сообщения были уже пусты, как <?php $msj='""';?>, но по-прежнему создаются элементы ошибок/контейнеры после этикеток ..

Так быстро остановить это происходит, я редактировал jquery.validate.js файл закомментировав только строку, которая гласит label.insertAfter(element); вокруг линии 697 +/- ..

Это всего лишь обходной способ noob;), но он сделал это!

3

Я также хотел скрыть сообщения об ошибках и повернуть поля input и textarea по ошибке. Вот небольшой пример:

http://jsfiddle.net/MFRYm/51/

и полностью рабочий код в случае jsfiddle перерывов;)

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title> Demo</title> 

    <script type='text/javascript' src='http://code.jquery.com/jquery-1.10.1.js'></script>  

     <script type='text/javascript' src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.js"></script> 


    <style type='text/css'> 
    .error { 
    border: 1px solid red; 
} 
    </style> 

<script type='text/javascript'>//<![CDATA[ 
$(window).load(function(){ 
$("#email_form").validate({ 
     rules: { 
     email: { 
      required: true, 
      email: true 
     } 
     }, highlight: function(input) { 
      $(input).addClass('error'); 
     }, 
    errorPlacement: function(error, element){} 
}); 
});//]]> 

</script> 


</head> 
<body> 
<form name="form" id="email_form" method="post" action="#"> 
    <div class="item" style="clear:left;"> 
     <label>E Mail *</label> 
     <input id="femail" name="email" type="text"> 
    </div> 
    Type invalid email and press Tab key 
</form> 

</body> 

</html> 
2

Как я использую CSS для стилизации label.valid, label.error в JQuery Validate , эта кнопка очистила все ошибки и оставила и данные в полях формы в такте.

 <button onclick="$('label.error').css('display', 'none');return false;">Clear Error </button> 
+0

+1, приятное объяснение – SagarPPanchal

0

простое решение только с помощью CSS:

label.valid { 
    display: none; 
} 
1

Возможно, гораздо проще и семантически предпочтительным решением было бы использовать CSS

требуется
label.error { 
    position:absolute; 
    left:20000px; 
    top:0; 
    } 
input.error { 
    border:red 1px; 
} 

Нет JS, легче управлять и кто-то с у устройства чтения с экрана действительно будет некоторое указание на то, что они что-то пропустили

+0

Хорошая точка на экране чтения, я должен принять это в учет чаще! – SeanKendle

1

У меня был проект, разработанный другой библиотекой проверки, я хотел добавить библиотеку проверки, чтобы использовать ее функции для проверки формы, или нет (используемая библиотека проверки не имеет этой функции)

Мое решение: Я просто добавил библиотека Validate его CDN

и использовать функцию валидации по щелчку:

$(document).on('click','#buttonID',function(){ 
    var form = $("#formID"); 
    form.validate(); 
    console.log(form.valid()); 
}); 

и попытался скрыть сообщения об ошибках, поднятый JQuery Validate путем добавления кода CSS:

label.error{ 
    display: none!important; 
} 
0

Вы можете добавить onfocus и onkeyup, которые удалили бы сообщение об ошибке.

$("selector").validate({ 
    onkeyup: false, 
    onfocusout: false 
}); 
Смежные вопросы