Проверка JQuery - Скрыть сообщение об ошибке - PullRequest
28 голосов
/ 06 января 2011

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

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

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

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

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

Ответы [ 10 ]

71 голосов
/ 20 июня 2011

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

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

Это фактически нигде не отображает сообщения об ошибках.

6 голосов
/ 11 марта 2012

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

jQuery.validator.messages.required = "";

$("selector").validate();
5 голосов
/ 06 января 2011

Вы можете установить параметр 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);
            }
        }
    }
});

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

3 голосов
/ 05 ноября 2013

Я также хотел скрыть сообщения об ошибках и включить мои 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 голосов
/ 06 марта 2014

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

2 голосов
/ 22 октября 2012

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

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

Это просто обходной путь нуба;) но он это сделал!

1 голос
/ 06 апреля 2017

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

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

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

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

и попытался скрыть сообщения об ошибках, которые выдает jquery validateдобавив код CSS:

label.error{
   display: none!important;
}
1 голос
/ 21 октября 2016

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

label.error {
  position:absolute;
  left:20000px;
  top:0;
  }
input.error {
  border:red 1px;
 }

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

1 голос
/ 11 июня 2015

Самое простое решение только с CSS:

label.valid {
   display: none;
}
0 голосов
/ 25 сентября 2017

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

$("selector").validate({
    onkeyup: false,
    onfocusout: false
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...