2014-02-20 87 views
0

我正在使用jQuery.validate來驗證搜索框。我在輸入框中輸入錯誤消息。麻煩的是,如果您單擊提交一次,則會顯示錯誤消息。但是,如果您單擊它兩次,然後使用錯誤消息作爲搜索項。jquery.validate忽略錯誤messgae

我需要它忽略此錯誤消息並沒有提交它作爲搜索查詢。

<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()); 
} 
}); 

回答

1

你的方法沒有意義。爲什麼你想讓錯誤信息成爲該字段的值?然後你將錯誤本身變成表單數據並創建一個新的錯誤。這會造成非常不愉快的用戶體驗。

如果你使用什麼placeholder屬性呢?

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

這並不理想,但至少你不會弄錯字段值與錯誤文本。

DEMO:http://jsfiddle.net/Rw9JH

+0

不是我的選擇 - 客戶端堅持它!謝謝,雖然工作很好。 – user1683285

0

我不認爲這是一個好主意,把錯誤信息到你的領域的新的價值,因爲它正是導致你所面臨的問題,沒有乾淨的解決辦法我能想到的這個情況。

然而,我能想到的未放置錯誤消息作爲字段值,但其定位爲固定元件相對於所述輸入字段生成的最佳解決方案。

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

它可能不是100%的位置,但我確信這比改變字段值更好。