jquery.validate игнорировать сообщения об ошибках

0

Я использую jQuery.validate для проверки поиска. Я помещаю сообщения об ошибках в поле ввода. Проблема в том, что если вы нажмете кнопку "Отправить один раз", появится сообщение об ошибке. Но если вы дважды щелкнете по нему, оно использует сообщение об ошибке в качестве условия поиска.

Мне нужно, чтобы он проигнорировал это сообщение об ошибке и не отправил его в качестве поискового запроса.

<input class="search-input required" id="search" type="search" name="s" placeholder="Search">
<input type="hidden" id="post_type" class="required" name="post_type" value="wpdmcategory" />

$("#documents-searchform").validate({
onkeyup: false,
onblur: false,
focusInvalid: false,
ignoreTitle: true,

    messages: {
    s: "Enter a search term"
}, 
errorPlacement: function(error, element) {
    element.val(error.text());
}
});
Теги:
jquery-validate

2 ответа

1
Лучший ответ

Ваш подход не имеет смысла. Почему вы хотите, чтобы сообщение об ошибке было значением поля? Тогда у вас есть сама ошибка, которая станет данными формы и создаст новую ошибку. Это создало бы очень неприятный пользовательский опыт.

Что делать, если вместо этого вы используете атрибут placeholder?

errorPlacement: function (error, element) {
    element.prop('placeholder', error.text());
}

Это не идеально, но по крайней мере вы не испортите значение поля с текстом ошибки.

ДЕМО: http://jsfiddle.net/Rw9JH

  • 0
    Не мой выбор - клиент настаивает на этом !! Спасибо, хотя работал удовольствие.
0

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

Однако лучшее решение, о котором я могу думать, не помещает сообщение об ошибке в качестве значения поля, а позиционирует его как фиксированный элемент относительно поля ввода.

errorPlacement: function(error, element) {
    error.insertAfter(element).position({
          my:'left top',
          at:'left top',
          of: element          
    });
}

Он не может быть на 100% позиционирован, но я считаю, что это лучше, чем изменение значения поля.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню