簡體   English   中英

我怎樣才能讓typeahead.js與jquery.validate完美搭配?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM