2012-10-24 67 views
1

我是一個jQuery新手,並嘗試與jQuery typewatch一起實現自動完成功能。也就是說,要在一定的時間週期(例如750毫秒)之後從Web服務獲取數據,而不是在minLength之後。jquery自動完成與類型手錶

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.searchinput').autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "/Services/SampleWebService.asmx/GetProduct", 
        data: '{"searchString":"' + request.term + '"}', 
        dataType: "json", 
        async: true, 
        success: function (data) { 
         response(data); 
        } 
       }); 
      }, 
     }); 
     $('.searchinput').typewatch({ 
      callback: $.autocomplete, 
      wait: 750, 
      highlight: false 
     }); 
    }); 

我自動完成事情的作品精美絕倫,但不知何故,我不能夠包括typewatch的事情吧。我確信有一個我不知道的嚴重編碼故障。

感謝

回答

3

jQuery的自動完成有這個選項,因爲參數調用延遲:

http://api.jqueryui.com/autocomplete/#option-delay

所以,你所要做的就是改變參數,並刪除typewatch爲:

$(document).ready(function() { 
     $('.searchinput').autocomplete({ 
      delay:750, 
      source: function (request, response) { 
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        url: "/Services/SampleWebService.asmx/GetProduct", 
        data: '{"searchString":"' + request.term + '"}', 
        dataType: "json", 
        async: true, 
        success: function (data) { 
         response(data); 
        } 
       }); 
      }, 
     }); 
    }); 
+1

你只是真棒搜索!謝謝。 –

0

稱爲「延遲」的參數是您必須等待affyd keydown調用外部服務的時間。這只是爲了不超載服務,沒有「敏感」的搜索數據。

我從用戶問題中瞭解到的是,他希望每750ms調用一次自動完成「更新」功能。

你可以做的是改變typewatch「段」與此:

$('.searchinput').typewatch({ 
    callback: function(){ 
     $(".searchinput").data("autocomplete").search(); 
    }, 
    wait: 750, 
    highlight: false 
}); 

這將觸發對服務和顯示彈出響應每750毫秒

+1

我不想讓你-1,但先做一些測試。延遲這樣做。如果您按照原樣放置該類型手錶,則還需要在此處鍵入您聲明自動填充的方式。 – Aristos