私はノックアウトフレームワークを使用しています。私はko.utils.arrayFilterを使用してフィルタリングできる観測可能な配列を持っています 今、配列をリセットするボタンを追加したいと思います。 配列は、入力フィールドがキーストロークを使用して空になった場合にリセットされますように、私は、入力フィールドを空にし、キーJavascript:入力フィールドを空にしてEnterを押す
self.resetFilter = function(){
$('#filter').val('');
var e = $Event("keypress");
e.which = 13;
$("#filter").trigger(e);
};
ないコードが間違っている場合は、必ずを押下すると、それをシミュレートしたかったです。ノックアウトを使用してリセットしていないので、これがノックアウトの問題である場合フィルタリング機能のための全体のコードとHTMLでのデータバインディングの下
Javascriptが
self.stringStartsWith = function(string, startsWith) {
string = string || "";
if (startsWith.length > string.length)
return false;
return string.substring(0, startsWith.length) === startsWith;
};
self.filter = ko.observable('');
self.filteredItems = ko.computed(function() {
var filter = self.filter().toLowerCase();
self.resetFilter = function() {
$('#filter').val('');
var e = $Event("keypress");
e.which = 13;
$("#filter").trigger(e);
};
if (!filter) {
return self.venueList();
} else {
return ko.utils.arrayFilter(self.venueList(), function(venue) {
console.log(venue);
return self.stringStartsWith(venue.name.toLowerCase(), filter);
console.log(venue);
});
}
}, self.venueList);
};
HTML
<li>
<input placeholder="Search" id="filter" type="text" data-bind="value: filter, valueUpdate: 'afterkeydown'" autocomplete="off">
<button data-bind="click: function(){resetFilter();}">Reset</button>
</li>
あなたがトリガする必要があります値を設定した後、およびキー押下をトリガーする前に、イベントを変更します。 – raduation
ありがとうございます。入力フィールドが空になっているのが分かります。変更イベントは何をしますか?私は変更機能でキーストロークコードをラップしようとしましたが、$( '#filter')を追加しようとしましたが、trigger( 'change()'); –
'.trigger( 'change')' 'でなければなりません。' '変更 'の後にはかっこはありません。 – raduation