我想用KnockoutJS做基本的搜索活动。
该按钮与KnockoutJ绑定以过滤记录。当用户单击enter button.It正在运行Chrome时,我正在尝试触发按钮的单击事件,而well.It也在IE上工作,如果,则手动单击按钮。
问题是当我在键盘上按enter键时,它不会在IE.I上过滤(将数据传递给viewModel),我跟踪了我的viewModel。我看到,如果按enter键,它会将先前的数据发送到viewModel,例如:
<button type="button" id="btnSearch" data-bind="click: filter" , class="btn btn- primary btn-large" ></i>Filter</button> 联署材料:
$(document).ready(function () {
$("#txtSearchText").keyup(function (event) {
var evt = event || window.event;
if (evt.keyCode == 13) {
alert(evt.keyCode);
$("#btnSearch").click();
}
});
});MyViewModel:
var ListCasesViewModel = function () {
var self = this;
self.selectedStartDate = ko.observable(null);
self.selectedEndDate = ko.observable(new Date());
self.selectedSearchKey = ko.observable("");
self.selectedStatuses = ko.observableArray();
self.selectedHospitals = ko.observableArray();
// methods...
this.init = function () {
self.selectedEndDate(new Date());
self.filter();
}
this.filter = function () {
// get filter control values
var startDate = self.selectedStartDate(); // dtStart.value();
var endDate = self.selectedEndDate(); //dtEnd.value();
var searchText = self.selectedSearchKey(); //txtSearchText.val();
var lstStatus = $("#lstStatus").data("kendoMultiSelect");
var lstHospital = $("#lstHospitals").data("kendoMultiSelect");
var status = lstStatus.value().toString();
var hospitalIDs = lstHospital.value().toString();
// prepare filters
$filter = new Array();
if (startDate != undefined)
$filter.push({ field: "startDate", operator: "eq", value: startDate });
if (endDate != undefined)
$filter.push({ field: "endDate", operator: "eq", value: endDate });
if (status != undefined)
$filter.push({ field: "caseStatus", operator: "eq", value: status });
if (hospitalIDs != undefined)
$filter.push({ field: "hospitalIDs", operator: "eq", value: hospitalIDs });
if (searchText != undefined)
$filter.push({ field: "searchText", operator: "eq", value: searchText });
var list = $("#listView").data("kendoListView");
list.dataSource.filter($filter);
}};发布于 2014-01-16 11:19:17
将valueUpdate绑定添加到searchText输入:
<input id="txtSearchText" type="text" data-bind="value:selectedSearchKey,valueUpdate:'afterkeydown'"/>这迫使敲除更新可观察到的值,只要用户输入一个字母。
敲除“值”绑定
https://stackoverflow.com/questions/21158750
复制相似问题