4

我有一个空的文本字段,但是当您单击它时,它会从以前的输入中得到一些建议。

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

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

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

3 回答 3

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 是 onpropertychange 的 W3C 版本。IE9开始支持这个事件。

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

所以如果你想在所有浏览器中保持紧凑

IE<9 使用 onpropertychange

IE>9等浏览器使用oninput

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

$(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上的演示

于 2013-07-19T14:45:45.970 回答
1

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

这是一个小书签,因此您只需将其拖到书签栏,导航到您感兴趣的页面,然后单击链接。快!有关当前注册的 Javascript 事件的详细信息。

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

于 2013-07-19T14:47:19.730 回答
0

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

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

但同时,monitorEvents从控制台发生时不会报告任何事件

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

例如在此页面上的控制台中应用

于 2013-07-19T14:54:18.513 回答