Я использую 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());
}
});
Ваш подход не имеет смысла. Почему вы хотите, чтобы сообщение об ошибке было значением поля? Тогда у вас есть сама ошибка, которая станет данными формы и создаст новую ошибку. Это создало бы очень неприятный пользовательский опыт.
Что делать, если вместо этого вы используете атрибут placeholder
?
errorPlacement: function (error, element) {
element.prop('placeholder', error.text());
}
Это не идеально, но по крайней мере вы не испортите значение поля с текстом ошибки.
Я не думаю, что это хорошая идея, чтобы превратить сообщение об ошибке в новое значение вашего поля, так как оно приведет именно к поведению, с которым вы столкнулись, без каких-либо обходных решений, о которых я могу думать в этой ситуации.
Однако лучшее решение, о котором я могу думать, не помещает сообщение об ошибке в качестве значения поля, а позиционирует его как фиксированный элемент относительно поля ввода.
errorPlacement: function(error, element) {
error.insertAfter(element).position({
my:'left top',
at:'left top',
of: element
});
}
Он не может быть на 100% позиционирован, но я считаю, что это лучше, чем изменение значения поля.