我正在尝试阅读html文本框的内容并从API获取数据以完成Google格式自动完成。我正在使用twitter bootstrap typeahead
来获取自动完成功能。为此,我需要在按下时记录键,并使用查询文本进行API调用。
文本框的html是这个
<input id="query" data-bind="value: query, valueUpdate: 'keypress', event: { keypress: check }"/>
我的假设是,一旦按下键,这将更新viewmodel中的值,同时check
函数将调用API。但是调用check()并且在用户键入时永远不会填充文本框。如果JS看起来像这样 -
function check() {
alert("Hello");
}
对于我按下的每个键,你好弹出,但是HTML UI中的文本框没有显示按下的键/不记录按下了哪个键。如何记录按键并同时发送请求?
答案 0 :(得分:41)
valueUpdate = 'afterkeydown'
event: { 'keyup': check }:
如果可能的话,我会使用console.log而不是alert,并记录查询以确保值正在更新。 :)你也想我这样记录事件
function check(data, event) {
console.log(event);
}
将告诉您按下的键的密钥代码
答案 1 :(得分:29)
这个帖子很旧,但我注意到它并没有引用KO的 textInput 绑定。这是v3.2.0中添加的新功能。
KO文档,至少截至目前(2015年1月),专门解决了这个问题:
虽然值绑定也可以在文本框和viewmodel属性之间执行双向绑定,但只要您想立即进行实时更新,就应该更喜欢textInput。
请参阅http://knockoutjs.com/documentation/textinput-binding.html