代码之家  ›  专栏  ›  技术社区  ›  divyanshm

在淘汰JS中使用按键事件

  •  33
  • divyanshm  · 技术社区  · 12 年前

    我正在尝试读取html文本框的内容,并从API中获取数据,以实现谷歌风格的自动完成。我正在使用 twitter bootstrap typeahead 用于自动完成功能。为此,我需要在按键被按下时记录它们,并使用查询文本进行API调用。

    文本框的html是这样的

    <input id="query" data-bind="value: query, valueUpdate: 'keypress', event: { keypress: check }"/>
    

    我的假设是,只要按下键,就会更新视图模型中的值 check 函数将同时调用API。但是调用是为了检查(),并且当用户键入时,文本框永远不会被填充。如果JS看起来像这样-

    function check() {
        alert("Hello");     
        }
    

    对于我按下的每一个键,hello都会弹出,但HTML UI中的文本框不会显示按下的键/不会记录按下了哪个键。如何记录按键并同时发送请求?

    2 回复  |  直到 8 年前
        1
  •  46
  •   Community Mohan Dere    10 年前
    1. 确保查询是可观察的
    2. 使用 valueUpdate = 'afterkeydown'
    3. 使用 event: { 'keyup': check }:

    此外,如果可能的话,我会使用console.log而不是alert,并记录查询,以便确保值正在更新。:)你也是我想要这样记录事件的人

    function check(data, event) {
        console.log(event);
    }
    

    它会告诉你按下的键的键代码

        2
  •  34
  •   CSSian    11 年前

    这个帖子很旧,但我注意到它没有引用KO的用法 text输入 结合这是v3.2.0中添加的一项新功能。

    至少截至目前(2015年1月),KO文件专门解决了这个问题:

    注1:text输入与值绑定

    尽管值绑定还可以在文本框和视图模型财产之间执行双向绑定,但只要需要即时更新,您应该首选textInput。

    看见 http://knockoutjs.com/documentation/textinput-binding.html

    推荐文章