首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KnockoutJs数据绑定不适用于Internet上的jquery单击事件(8-11)

KnockoutJs数据绑定不适用于Internet上的jquery单击事件(8-11)
EN

Stack Overflow用户
提问于 2014-01-16 10:08:04
回答 1查看 1.3K关注 0票数 0

我想用KnockoutJS做基本的搜索活动。

该按钮与KnockoutJ绑定以过滤记录。当用户单击enter button.It正在运行Chrome时,我正在尝试触发按钮的单击事件,而well.It也在IE上工作,如果,则手动单击按钮。

问题是当我在键盘上按enter键时,它不会在IE.I上过滤(将数据传递给viewModel),我跟踪了我的viewModel。我看到,如果按enter键,它会将先前的数据发送到viewModel,例如:

  1. 文本框输入值:30 ->单击事件触发视图模型上的->数据: null
  2. 文本框输入值:20 ->单击事件触发视图模型上的->数据:30(以前的数据)
  3. 文本框输入值:10 ->单击事件触发视图模型上的->数据:20(以前的数据)

代码语言:javascript
复制
     <button type="button" id="btnSearch" data-bind="click: filter" , class="btn btn-              primary btn-large" ></i>Filter</button>             

联署材料:

代码语言:javascript
复制
$(document).ready(function () {
    $("#txtSearchText").keyup(function (event) {
        var evt = event || window.event;

        if (evt.keyCode == 13) {
            alert(evt.keyCode);
            $("#btnSearch").click();


        }
    });

});

MyViewModel:

代码语言:javascript
复制
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);

}};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-16 11:19:17

将valueUpdate绑定添加到searchText输入:

代码语言:javascript
复制
<input id="txtSearchText" type="text" data-bind="value:selectedSearchKey,valueUpdate:'afterkeydown'"/>

这迫使敲除更新可观察到的值,只要用户输入一个字母。

敲除“值”绑定

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21158750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档