2016-04-06 17 views
0

HTML kodunda preslenmiş anahtarı girin sonra gözlemlenebilir nasıl güncellenir</p> <pre class="lang-html prettyprint-override"><code><input type="text" data-bind="value: nextName"> </code></pre> <p>gözlemlenebilir Internet Explorer

nextName: KnockoutComputed<string>; 
currentName: KnockoutObservable<string>; 

constructor() 
{ 
    this.nextName = ko.pureComputed(
    { 
     read:() => this.currentName(), 
     write: (value: string) => 
     { 
      this.currentName(value); 
      if ((value) && value.trim().length > 0) 
       this.runSearch(); 
     } 
    }, this); 
} 

kullanıcı basın girin sonra - arama örneğin Chrome'da normalde yürütülecektir, ancak içinde Internet Explorer
valueUpdate:'afterkeydown' ile bağlayıcı kullanmayı denedim, ancak bu, her karakterin ardından arama yapmaya çalışacaktır - bu, elde etmeye çalıştığım şeyi değil.

cevap

0

Sen bağlayıcı textInput kullanmak ve istediğini yapmak enterkey için custom Knockout binding oluşturabilirsiniz:
textInputviewmodel mülkiyet ve öğenin değeri .it autocomplete, drag-and-drop ve clipboard olaylar için örnek güncellemeleri sağlar arasında iki yönlü güncellemeler sağlar. Daha sonra, kullanıcı enter tuşuna bastığında ve IE'de de çalışması gerektiğinde, işlevinizi çağırmak için enterkey bağlamasını kullanabilirsiniz.

<input type="text" data-bind="textInput: nextName,enterkey: function() {runSearch()}"> 

özel Nakavt bağlayıcı:

ko.bindingHandlers.enterkey = { 
    init: function (element, valueAccessor, allBindings, viewModel) { 
     var callback = valueAccessor(); 
     $(element).keypress(function (event) { 
      var keyCode = (event.which ? event.which : event.keyCode); 
      if (keyCode === 13) { 
       callback.call(viewModel); 
       return false; 
      } 
      return true; 
     }); 
    } 
}; 

Çalışma örneği: http://jsfiddle.net/GSvnh/5124/

İlgili konular