单击在焦点丢失之前注册的位置,但在焦点丢失后运行事件
Click position registered before focus lost but event run after focus lost
我有一个带有 css 规则的文本区域,当聚焦时会改变它的高度。遗憾的是,单击事件在文本区域失去焦点之前注册它的位置,但事件在文本区域失去焦点后执行,因此按钮不在同一位置。
这种行为似乎是跨浏览器一致的,我已经在FF,Chrome和Opera中尝试过。这是否应该被视为错误,我如何规避此问题?
.html:
<form>
<textarea></textarea><br/>
<input type="button" value="Create" onclick="alert('clicked!'); return false;">
</form>
.css:
TEXTAREA:focus {
height: 120px;
}
我能想到的唯一真正的解决方案是为调整大小添加轻微的延迟。 像这样的东西(jquery):
$("textarea").focus(function(){
$(this).css("height", "200px");
}).blur(function(){
var $this = $(this);
setTimeout(function(){
$this.css("height", "50px");
},100);
});
http://jsfiddle.net/FcCca/
或者,CSS 过渡解决方案:
textarea {
transition-property: height;
transition-duration: .1s;
transition-timing-function: step-end;
height: 20px;
}
textarea:focus{
height: 200px;
}
http://jsfiddle.net/FcCca/2/
您可以使用CSS过渡并设置延迟。 或者你可以做JavaScript并设置超时。
它正在做它应该做的事情,它失去了焦点,盒子缩小了大小,然后它处理了点击。 为什么不让 onfocus 事件永久添加一个 height:120 类,如果你愿意,有一个"更少"按钮来再次缩小框。
相关文章:
- 焦点事件不适用于动态生成的文本框
- 程序性焦点事件不会引发焦点事件处理程序
- 引导选择选择器焦点事件
- jQuery Opera焦点事件不起作用
- 获取选择框展开/用户焦点事件
- iframe 中输入上的模糊/焦点事件(委派)
- IE 焦点事件在 ajax 加载后随机失败
- 如何处理单击和焦点事件以切换 .
- 仅将焦点事件绑定到子元素
- 如何使焦点事件发生在动态插入的输入上
- “未捕获的引用错误:(函数)未定义”与焦点事件
- jQuery 焦点事件似乎在 qUnit 测试中不起作用
- 无法将表单输入字段上的 JQuery UI 工具提示限制为仅在单击/焦点事件上显示
- 更改浏览器选项卡会不期望触发焦点事件,尤其是在谷歌浏览器中
- 焦点事件 jquery 组合框/自动完成
- 焦点事件被另一个焦点事件忽略
- 使焦点事件忽略某些元素
- 在处理焦点事件时触发单击
- ios CordovaJavaScript焦点事件永远不会到来
- 在 Internet Explorer 中多次触发焦点事件