jquery.validate忽略错误消息

时间:2014-02-20 18:49:22

标签: jquery jquery-validate

我正在使用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());
}
});

2 个答案:

答案 0 :(得分:1)

你的方法毫无意义。为什么您希望错误消息是字段的值?然后,您将错误本身变为表单数据并创建新错误。这将导致非常不愉快的用户体验。

如果您使用placeholder属性,该怎么办?

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

这不是理想的,但至少你没有用错误文本搞乱字段值。

DEMO:http://jsfiddle.net/Rw9JH

答案 1 :(得分:0)

我认为将错误消息转换为您的字段的新值并不是一个好主意,因为它将完全导致您所面临的行为,在这种情况下我无法想到干净的解决方法。 / p>

但是,我能想到的最佳解决方案不是将错误消息作为字段值放置,而是将其定位为相对于输入字段的固定元素。

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

可能没有100%定位,但我确实认为这比改变字段值更好。