带有keyup事件的data-bind不会触发

时间:2013-07-04 22:42:48

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

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

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

在我的viewmodel中我有

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

做同样的事情

但对我不起作用。

1 个答案:

答案 0 :(得分:0)

按照以下方式更改getZipCodes的定义后,它开始工作。

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

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

而不是

var getZipCodes = function() 

如果我使用

function getZipCodes()....

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