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