改变布局的Javascript/jQuery focusout事件导致点击事件不触发
Javascript/jQuery focusout event that changes layout causes click event to not fire
我有一个字段,当你把焦点放在它上时,它会改变页面的布局。我在提交表格的页面上也有按钮。
如果我进入我的字段并键入一个值,然后单击按钮,按钮单击事件永远不会触发。之所以会发生这种情况,是因为在触发点击事件之前,布局发生了更改,这意味着按钮会更改位置。当点击事件启动时,它是在一个空白区域启动的,而不是按钮。
以下是该问题的一部分:http://jsfiddle.net/xM88p/
我找到了一种解决IE问题的方法,但经过广泛的研究,我无法在FF/Chrome:中找到/访问相同的对象
//only works in IE
if(event.originalEvent.toElement){
$("#"+event.originalEvent.toElement.id).click();
}
http://jsfiddle.net/xM88p/2/
使用mousedown
而不是click
:
$("#btn_test").on('mousedown', function (event){
alert("clicked!");
});
$('#test').focusout(function (event){
$('<p>Test</p>').insertAfter(this);
});
编辑
好吧,我在事件处理方面更有创意了。新的解决方案跟踪mousedown/mouseup事件以及单击的位置。它使用这些值来检查鼠标向上是否应该执行警报。
var testClicked = false;
var lastX, lastY;
$(document).on('mouseup', function (event) {
if (testClicked === true && lastX === event.clientX && lastY === event.clientY) {
alert("clicked!");
}
testClicked = false;
lastX = null;
lastY = null;
});
$("#btn_test").on('mousedown', function (event){
testClicked = true;
lastX = event.clientX;
lastY = event.clientY;
});
$('#test').focusout(function (event){
$('<p>Test</p>').insertAfter(this);
});
相关文章:
- 当一个单元格被编辑时,是否有一个事件触发,但值没有'不要改变
- 纯JavaScript中的Onclick滑块 - 事件不会改变CSS值
- 如何正确地改变输入表单的值以引起“注意”;改变“;事件
- 改变布局的Javascript/jQuery focusout事件导致点击事件不触发
- 当下拉选择通过模型改变时,如何触发jquery事件
- 使用点击事件来改变“;焦点”;
- 触发标准“;改变“;表单对象上的事件-由其上的任何侦听器拾取
- Marionette ItemView不发射“;改变“;事件
- 为什么jquery"改变“;事件在我的示例中不起作用
- "keydown”;以及“;改变“;事件不适用于jquery数据表
- 使用jQueryUI手风琴并在事件改变为在新的“;窗格”;
- JavaScript:用onclick事件改变webgl的纹理
- Knockout js valueupdate 'afterkeydown'事件改变不起作用
- Jquery事件改变内联背景颜色的图像
- 使用Jquery悬停事件改变css
- 使用Kefir用多个事件改变属性的惯用方法
- 三个下拉事件改变不工作
- 使用拖放事件改变形状
- 使用Onload事件改变HTML上的iframe事件
- 通过javascript点击事件改变wordpress主题