是否可以在动态添加的文本输入上全局捕获keydown
Is it possible to capture keydown globally on dynamically added text inputs?
我使用以下全局jQuery来显示和隐藏$.ajax
调用的加载div
:
$(document).ajaxStart(function(){
$("#loading").show();
}
$(document).ajaxStop(function(){
$("#loading").hide();
}
这很好,但我不想显示自动完成的加载div,所以我添加了这个:
$("input[type=text]").keydown(function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
然后,要为"正常"$.ajax
调用重置suppressGlobal
,这是:
var origAjax = $.ajax;
$.ajax = function() {
if (window.suppressGlobal) {
arguments[0].global = false;
}
origAjax.apply(this, arguments);
window.suppressGlobal = false;
};
这一切对于使用页面加载构建的文本输入都很好。但是,我有几种情况,使用jQuery/Javascript在客户端动态插入文本输入,在这种情况下,keydown
事件不会绑定到全局函数。我也试过on
:
$("input[type=text]").on('keydown', function(){
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
但这也不起作用。有没有一种方法可以全局捕获keydown
事件,而不管何时添加了文本输入?我能以某种方式全局捕获添加到DOM的文本输入并附加事件处理程序吗?
对于动态创建的控件,必须使用$(document).on()
。
jsfiddle:http://jsfiddle.net/G9qJE/
也可以使用:$('body').on
解释:分配事件时,它只分配给页面上当前存在的元素。如果你稍后关注其他元素,那么没有什么可以让那些元素的手表也能使用它们。这就是为什么您需要一些位于文档级别的东西来了解事件和要将其应用到的元素,这样它就可以监视任何匹配的新元素,并将该事件应用到它们。
$(document).on("keydown", "input[type=text]", function() {
if($(this).hasClass('ui-autocomplete-input')) {
window.suppressGlobal = true;
}
});
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 全局变量和全局对象的属性之间有什么区别吗
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 是否可以在动态添加的文本输入上全局捕获keydown
- 将输入数据保存到全局变量
- jQuery 更改元素在选择 - 多个选择输入的全局脚本
- React.js&Radium.js-使React风格在本质上是全局的,但要服从用户输入
- 如何将表单输入属性设置为计算的全局变量值
- SOAP请求中缺少激活全局自定义操作所需的输入字段
- 如何通过用户(输入字段)改变函数内全局变量的值
- Jquery全局插件解析输入