2013-05-07 9 views
9

Gözlemlenebilir bir knockout js'a bağlı bir giriş metin kutusuna sahibim.IE 9 & 10'un temizle düğmesini Knockout ciltleme ile işlemeye devam edin

<input id="searchTextBox" class="searchTextBox" type="text" maxlength="25" 
     title="Search" placeholder="Search" 
     data-bind="value: GridVm.FilterText, 
     valueUpdate: 'afterkeydown', 
     disable: GridVm.Data().length == 0" /> 

sorun kullanıcı IE x tıkladığında gözlemlenebilir FilterText güncelleme olmamasıdır.

remove the x görüntüleyebilirim (bağlantılı sorudaki ekran görüntüsüne bakın), ancak bu son çare (özelliği beğeniyorum). This forum says there is no event fired when the x is clicked.

Knockout'ta gözlemlenebilir bir güncelleştirmeyi veya bunu yapmak için iyi bir yolu zorlamak için kullanabileceğim bir olay var mı?

+0

Tıklatmaya tıklayın bağlama – CodeThug

cevap

11

sadece o değer güncellemesini tetiklemek için bu olay kanca

valueUpdate: 'afterkeydown' 

valueUpdate: 'input' 

değiştirirseniz. Genel olarak daha iyi çünkü panoya dayalı eylemleri ve metin sürükle-bırak eylemlerini de ele alıyor.

+0

Güzel bulmak! Bu benim için de çalıştı. Cevabım ve Fiddle'ımı güncelleme olarak seninkine değişiyorum. – Aligned

+0

Evet mükemmel bir çözüm. –

+0

Veri bağlama değerini textInput olarak değiştirmenin, sorunu güzelce çözdüğünü buldum. Her anahtardan sonra güncellemeyi durdurmak için bunu gözlemlenebilir bir oranla sınırlandırabilir: Ayrıntılar için http://knockoutjs.com/documentation/rateLimit-observable.html. –

4

input event ve Knockout's event binding kullanarak bunu çözdüm. İşte aşağıdaki kod ile my JsFiddle showing the solution.

<input type="search" id="input1" data-bind="value: textForBox, valueUpdate: 'afterkeydown', 
    event: { input: cleared }" /> 
var vm = { 
    textForBox: ko.observable(), 
    cleared: function (data, event) { 
     if (event.currentTarget.value === '') { 
      this.textForBox(''); 
     } 
    } 
}; 
ko.applyBindings(vm);