[英]How can I get typeahead.js to play nicely with jquery.validate?
我有一個使用jQuery驗證的ASP.NET MVC 5網站(MVC項目模板中的jquery.validate.js
)。 我正在嘗試使用typeahead.js
在表單的輸入字段之一上實現typeahead.js
輸入功能。 (該表單恰好在引導程序模態中)。
因為提交表單將發出AJAX請求,所以表單提交事件被捕獲,如下所示:
$form.on("submit", function (e) {
if (!$form.valid()) {
return false;
}
... do stuff ...
請注意,這里發生的第一件事是檢查表單,以檢查是否有jQuery驗證庫檢測到的任何驗證錯誤。
如果我不使用typeahead
,那么一切都很好。 我可以在表單中輸入值並提交,一切都很好。
但是,只要執行以下操作,即可在輸入中添加預輸入功能:
$("#myInput").typeahead({
minLength: 1,
highlight: true
},
{
source: mySource
});
...然后我不能再提交該表格。 我的形式被認為是無效的: $form.valid()
返回false
。
我認為typeahead.js
庫加入一些額外的元素(包括隱藏輸入)的形式,這是混淆了jquery.validate.js
庫。
使用Chrome F12,似乎那里的輸入看起來像是原始輸入的副本,可悲的是,該副本似乎已被復制,因此它也具有所有jQuery-validation屬性的副本。
我該如何解決?
這似乎可行(放在對typeahead()
的調用之后:
$("input.tt-hint").removeAttr("data-val data-val-required data-val-maxlength data-val-maxlength-max");
似乎額外的輸入上有tt-hint
類,因此您可以設置validate來忽略該類的輸入。
$form.validate({
ignore: ':hidden, .tt-hint'
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.