2013-07-16 15 views
10

敲除值綁定不適用於jquery autocomplte。如何讓它工作?敲除和jQuery自動完成

我有一個模板:

<input 
    type="text" 
    class="autocomplete" 
    data-bind="value: viewModelObservableValue" 
    name="MyValue" /> 

模板渲染後,我上的輸入應用的jQuery自動完成。綁定不起作用。請參閱我的jsfiddle

它的工作原理只有ko.applyBindings(viewModel)走後$(..).autocomplete(..);

+0

好吧得到的回答你。有趣的問題 –

回答

17

它看起來像jQuery的自動完成劫持change事件。這就是爲什麼它不起作用。

要解決這個問題,您必須將valueUpdate屬性設置爲blur。當然,選擇這個項目後不會觸發,你必須先模糊。

$(function() { 
 
    var availableTags = [ 
 
     "ActionScript", 
 
     "AppleScript", 
 
     "Asp", 
 
     "BASIC", 
 
     "C", 
 
     "C++", 
 
     "Clojure", 
 
     "COBOL", 
 
     "ColdFusion", 
 
     "Scheme" 
 
    ]; 
 
    $(".autocomplete").autocomplete({ 
 
     source: availableTags 
 
    }); 
 
}); 
 

 
var viewModel = { 
 
    myValue: ko.observable() 
 
}; 
 

 
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script> 
 

 
<input type="text" class="autocomplete" data-bind="value: myValue, valueUpdate:'blur' " /> 
 

 
<div data-bind="text: myValue"></div>

+6

你是超人!謝謝! – Andrei

+0

謝謝! *因此*比自定義綁定方法更容易.... –