【问题标题】:data-bind with keyup event does not trigger与 keyup 事件的数据绑定不会触发
【发布时间】:2013-07-02 23:16:11
【问题描述】:

我有一个文本输入元素,我希望用户输入城市或邮政编码,并且我想在用户输入文本时触发一个 javascript 函数。我的html如下

       <input type="text"
        placeholder="Zip Code Or City Name"
        class="input-block-level"
        data-bind="value: searchterm, valueUpdate: 'afterkeydown', event: { keyup: getZipCodes }" />

在我的视图模型中我有

var getZipCodes = function () {
        if (searchterm().length < 2) {
            return;
        }

        datacontext.getZips(searchterm(), zipcodes);
        return true;
    };

但事实证明 getZipCodes 从未被调用过。

我尝试将数据绑定到“onkeyup”,但没有成功,我确信我正在犯一些微妙的错误。有人可以帮我找出我做错了什么吗?

我尝试将 getZipCodes 更改为 getZipCodes = function(data, event) {...} 但这也不起作用。该函数只是没有被调用。

顺便说一句,我正在尝试做与Knockout event binding for input keypress causes weird behavior 几乎相同的事情

但对我不起作用。

【问题讨论】:

  • 您的意思是像 data-bind="value: searchterm, valueUpdate: 'afterkeyup', event: { keyup: getZipCodes }" /> 还是您指的是事件名称 valueUpdate 发生在我很好,只是永远不会调用 getZipCodes 函数。

标签: html data-binding knockout.js single-page-application


【解决方案1】:

如下更改 getZipCodes 的定义后,它开始工作了。

function getZipCodes(data, event) {
        if (searchterm().length < 2) {
            return true;
        }

        datacontext.getZips(searchterm(), zipcodes);
        return true;
    };

代替

var getZipCodes = function() 

如果我使用

function getZipCodes()....

它有效,不确定有什么区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多