哪个事件被解雇了? (javascript,input-field-history)

时间:2013-07-19 14:38:57

标签: javascript

我有一个空白的文本字段,但是当您点击它时,它会提供以前输入的一些建议。

如果我用鼠标选择其中一个,会触发哪个JavaScript事件?

我正在使用jquery 1.6.2绑定侦听器:

view.textRegistrations.bind("blur change keyup", function(event) {
    //do Something
});

3 个答案:

答案 0 :(得分:4)

触发了oninput事件。

尝试:

    <!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>title</title>
        </head>
        <body>
            <form method="get" id="" action="">
                <input type="text" name="name" oninput="alert('oninput')"/>
                <input type="submit" value="done"/>
            </form>
        </body>
    </html>

oninput,onpropertychange,onchange:

之间的差异

onchange 仅在

时触发

a)用户界面改变了属性

b)并且元素失去焦点

当属性发生变化时,

onpropertychange 会触发。但它只是IE浏览器

<强> oninput

oninput是onpropertychange的W3C版本。 IE9开始支持此事件。

oninput仅在元素值更改时触发。

所以,如果你想在所有浏览器中使用compacity

IE&lt; 9使用onpropertychange

IE&gt; 9和其他浏览器使用oninput

如果你使用jQuery,你可以绑定两个共享同一个hander的事件

$(function($) {
  //the same handler
  function oninput(e){
    //do sth
  }

  $("#ipt").on("input", function(e){
    console.log("trigger by oninput");
    oninput(e);
  })

  $("#ipt").on("propertychange", function(e) {
    console.log("trigger by propertychange");
    oninput(e);
  })
}) 

演示http://output.jsbin.com/salekaconi

答案 1 :(得分:1)

Visual Event 2是一个非常有用的工具,可以帮助您解决问题。基本上,对于屏幕上的任何元素,它将告诉您该元素注册了哪些Javascript evenet。

这是一个书签,所以你要做的就是把它拖到你的书签栏,导航到你好奇的页面,然后点击然后链接。普雷斯托!有关当前注册的Javascript事件的详细信息。

正如@smerny所说,很有可能甚至不是Javascript,而且只是本机浏览器功能。话虽这么说,你可能很容易实现自己的版本。

答案 2 :(得分:0)

输入事件报告更改(我正在使用 Google Chrome v28 进行测试),demo

document.getElementsByTagName('input')[0].oninput = function (e) {
    console.log('input', e);
};

但与此同时,来自控制台的monitorEvents在发生任何事件时都不报告

monitorEvents(document.getElementsByTagName('input')[0]);

this page上的控制台中应用