Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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
Javascript 是不是;模糊“;仅针对HTML表单对象触发事件?_Javascript_Jquery_Events_Onblur - Fatal编程技术网

Javascript 是不是;模糊“;仅针对HTML表单对象触发事件?

Javascript 是不是;模糊“;仅针对HTML表单对象触发事件?,javascript,jquery,events,onblur,Javascript,Jquery,Events,Onblur,我正在开发一个交互式web应用程序,当前安装在(用户:demo@demo.com,密码:demo)。它允许您将包含图像和/或文本的项目从左侧边栏拖到右侧的工作区中,并调整/编辑它们的大小 我已经设置了一个onblur事件处理程序,当一个新创建的对象失去焦点时(至少在理论上)触发该处理程序,出于测试目的,该处理程序只需发出一个alert()调用。问题是处理程序根本不会被触发。下面是一段用于创建这些新对象的代码: obj.id = 'mesh-obj-'+current_object_id; jqO

我正在开发一个交互式web应用程序,当前安装在(用户:demo@demo.com,密码:demo)。它允许您将包含图像和/或文本的项目从左侧边栏拖到右侧的工作区中,并调整/编辑它们的大小

我已经设置了一个
onblur
事件处理程序,当一个新创建的对象失去焦点时(至少在理论上)触发该处理程序,出于测试目的,该处理程序只需发出一个
alert()
调用。问题是处理程序根本不会被触发。下面是一段用于创建这些新对象的代码:

obj.id = 'mesh-obj-'+current_object_id;
jqObject
    .attr('id',obj.id)
    .attr('item_no', current_object_id)
    .removeClass('dragged transparent tpl-obj no-user-select')
    .addClass('mesh-obj')
    .css({
        'z-index' : current_z_index,
        'left' : obj.position.left - mesh.position.left - mesh.borderWidth,
        'top' : obj.position.top - mesh.position.top - mesh.borderWidth,
        'right' : 'auto'
    })
    .on("focusout blur", function(event){
        alert('object lost focus'); 
    })
    .appendTo('#mesh');

blur事件是否仅触发表单输入或任何HTML标记?如果是后者,那么我做错了什么?

模糊事件不仅可以用于表单元素


阅读本文了解更多信息。

您需要为html元素分配tabindex以捕获模糊事件

html:


来自jQuery文档:当元素失去焦点时,模糊事件被发送到元素。最初,此事件仅适用于表单元素,例如。在最近的浏览器中,事件的域已经扩展到包括所有元素类型。通过键盘命令(如Tab键)或鼠标单击页面上的其他位置,元素可能会失去焦点。可能是因为未附加
blur
处理程序吗?是否需要在焦点和模糊之间加逗号?无逗号。只是用空格隔开。你能提供更多细节吗?tabindex属性对我来说是新的,我不确定它到底有什么帮助,或者我如何使用它来解决我的问题。然后在元素上使用css
outline:0
来删除聚焦该元素时出现的任何难看的轮廓。哪些是较新的浏览器?(快速总结会很好,我喜欢quirksmode.org,但它可能并不总是可以访问…)知道这一点很好,这是我假设的,但它仍然不能解决我的问题。否则,我仍然不知道为什么新创建的元素上的blur事件处理程序不能启动。现在最好恢复它在所有主流浏览器上都能运行
<div id="box1" class="box" tabindex="1">div 1</div>
<div id="box2" class="box" tabindex="2">div 2</div>
$('.box').blur(function(){
   console.log(this)
})