Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery';输入';事件_Jquery_Events_Input - Fatal编程技术网

jQuery';输入';事件

jQuery';输入';事件,jquery,events,input,Jquery,Events,Input,在看到这一点之前,我从未听说过jQuery中有一个名为input的事件 你知道它为什么起作用吗?它是keyup的别名还是什么 $(document).on('input', 'input:text', function() {}); 在通过用户界面更改元素的文本内容时发生 它不是keyup的别名,因为即使按键不起任何作用,keyup也会触发(例如:按下然后释放控制键将触发keyup事件) 思考它的一个好方法是这样的:它是一个在输入改变时触发的事件。这包括——但不限于——按下修改输入的键(例如,

在看到这一点之前,我从未听说过jQuery中有一个名为
input
的事件

你知道它为什么起作用吗?它是
keyup
的别名还是什么

$(document).on('input', 'input:text', function() {});
在通过用户界面更改元素的文本内容时发生

它不是
keyup
的别名,因为即使按键不起任何作用,
keyup
也会触发(例如:按下然后释放控制键将触发
keyup
事件)

思考它的一个好方法是这样的:它是一个在输入改变时触发的事件。这包括——但不限于——按下修改输入的键(例如,
Ctrl
本身不会触发事件,但是
Ctrl-V
粘贴一些文本会触发事件)、选择自动完成选项、Linux风格的中键单击粘贴、拖放以及其他许多事情


有关更多详细信息,请参阅第页和此答案上的注释。

oninput
事件对于跟踪输入字段的更改非常有用

但是,IE版本<9中不支持它。但较旧的IE版本有自己的专有事件
onpropertychange
,其作用与
oninput
相同

因此,您可以这样使用它:

$(':input').on('input propertychange');
要有一个完整的横排支持

由于可以为任何属性更改触发propertychange,例如,已禁用的属性已更改,因此您希望包括以下内容:

$(':input').on('propertychange input', function (e) {
    var valueChanged = false;

    if (e.type=='propertychange') {
        valueChanged = e.originalEvent.propertyName=='value';
    } else {
        valueChanged = true;
    }
    if (valueChanged) {
        /* Code goes here */
    }
});

我认为“输入”在这里的工作方式与“oninput”在DOM级别O事件模型中的工作方式相同

顺便说一下:

正如silkfire评论的那样,我也在谷歌上搜索“jQuery输入事件”。因此,我来到这里,惊讶地发现“input”是jquery的bind()命令可以接受的参数。
在jqueryin-Action(第102页,2008年版)中,没有提到“输入”是一个可能的事件(相对于其他20个事件,从“模糊”到“卸载”)。的确,在p。92,从重读(即,从对0级和2级模型之间不同字符串标识符的引用)可以推测出相反的情况。这是相当误导的

正如Clautrofob所说,IE9+支持oninput

,“Internet Explorer 9中的oninput事件存在错误。只有在插入字符时,才通过用户界面从文本字段中删除字符时才会触发oninput事件。虽然Internet Explorer 9中支持onpropertychange事件,但与oninput事件类似,它也存在错误,在删除时不会触发

由于可以通过多种方式删除字符(Backspace和Delete键、CTRL+X、上下文菜单中的Cut和Delete命令),因此没有检测所有更改的好方法。如果通过上下文菜单的Delete命令删除字符,则无法在Internet Explorer 9的JavaScript中检测到修改。”

我有很好的结果绑定到input和keyup(和keydown,如果你想在IE中按下Backspace键的话)


使用jQuery在IE和chrome中工作时,以下内容实际上是相同的:

$('a').click(function(){ doSomething(); });
$('a').on('click', function(){ doSomething(); });
然而,对于
input
事件,在我测试的浏览器中似乎只有第二种模式有效

因此,您希望这能起作用,但事实并非如此(至少目前如此):

同样,如果您想利用事件委派(例如,在将
输入.text
添加到DOM之前在
容器上设置事件),您应该想到:

$('#container').on('input', ':text', function(){ doSomething(); });
遗憾的是,它目前仍然不起作用

只有这种模式有效:

$(':text').on('input', function(){ doSomething(); });
使用更多最新信息编辑

我可以肯定,这种模式:

$('#container').on('input', ':text', function(){ doSomething(); });

现在,在所有“标准”浏览器中也可以使用。

jQuery对
.on()
方法具有以下签名:
.on(事件[,选择器][,数据],处理程序)

事件可以是本参考中列出的任何事件:

不过,并非所有浏览器都支持这些功能

Mozilla陈述了有关输入事件的以下内容:

当 或元素已更改。此外,它还可以在 内容更改时可编辑的编辑器


使用输入时要小心。此事件在IE 11中聚焦和模糊时触发。但它是在其他浏览器发生变化时触发的


除非
change
仅在字段失去焦点时触发<代码>输入
立即触发。@未定义是的,我有,否则我就不会为它创建问题。Google上唯一出现的是关于
input
元素以及如何将事件附加到其中的文章。这个问题完美地回答了所有的概念——我喜欢当你今天在Google上搜索这个问题时,这是第一个出现的结果:)你知道jQuery是否弥补了缺少的浏览器支持?(IE8、IE9不一致等)我刚在谷歌上搜索了“js输入事件”。有一个诀窍,知道用什么术语在谷歌上找到你想要的;它来自经验。然后,当然,谷歌会记录下一切,并用它来了解你真正想要的东西。我的大部分搜索都是API文档和编程问题,所以随着时间的推移,我发现当我搜索东西时,它可能会显示API文档和编程答案。我搜索的是“jQuery输入事件”,我不知道这是一个原始的JS事件。同样,这里的第一个结果通常是这样的,我认为它主要是事实上的答案/官方信息来源。<代码>输入<代码>实际上不仅仅是一个过滤的<代码> KEYUP ,例如,当从先前使用的值列表中选择值时,它也会被触发。如果没有
input
事件,这将很难处理。
oninput
也会在鼠标更改文本时触发(通过拖放,或通过右键单击菜单或中键单击粘贴)。谢谢
$(':text').on('input', function(){ doSomething(); });
$('#container').on('input', ':text', function(){ doSomething(); });