我正在使用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());
}
});
答案 0 :(得分:1)
你的方法毫无意义。为什么您希望错误消息是字段的值?然后,您将错误本身变为表单数据并创建新错误。这将导致非常不愉快的用户体验。
如果您使用placeholder
属性,该怎么办?
errorPlacement: function (error, element) {
element.prop('placeholder', error.text());
}
这不是理想的,但至少你没有用错误文本搞乱字段值。
答案 1 :(得分:0)
我认为将错误消息转换为您的字段的新值并不是一个好主意,因为它将完全导致您所面临的行为,在这种情况下我无法想到干净的解决方法。 / p>
但是,我能想到的最佳解决方案不是将错误消息作为字段值放置,而是将其定位为相对于输入字段的固定元素。
errorPlacement: function(error, element) {
error.insertAfter(element).position({
my:'left top',
at:'left top',
of: element
});
}
可能没有100%定位,但我确实认为这比改变字段值更好。