Knockout JS-如何检测触发模糊的元素
Knockout JS - how to detect element that triggered blur?
我试图在Knockout中更新条件模糊的输入值-基本上,我希望元素在特定元素触发模糊时不触发值更新。我知道我可以观察文档中每个元素的mousedown
,并确定上次单击的内容,但似乎有点过分。有人能想到其他工作吗?
<input class="edit" data-bind="value: title, valueUpdate: 'afterkeydown', enterKey: $root.stopEditing, selected: editing, event: { blur: $root.checkEditing }">
我试图实现这一目标的代码不适用于document.activeElement
。
self.checkEditing = function( item, event ) {
if (document.activeElement == $('a.cancel')) {
// revert to previous title, aka cancel the editing
item.title(item.previousTitle);
item.editing( false );
} else {
// this will update value with whatever was typed right before the blur
item.editing( false );
if ( !item.title().trim() ) {
self.remove( item );
}
}
};
为了适当地捕捉触发模糊的元素,必须使用setTimeout。模糊处理后,setTimeout确保聚焦元素可用。
例如:
输入:
<input class="edit" data-bind="value: title, valueUpdate: 'afterkeydown', selected: editing, event: { blur: $root.checkEditing, click: $root.editItem }">
模糊后检查活动元素的方法:
self.checkEditing = function( item, event ) {
setTimeout(function(){
console.log("The active element is: " + document.activeElement)
// check if the user selected cancel
if ($(document.activeElement).is("a.cancel")) {
// revert to previous title
item.title(item.previousTitle);
}
});
item.editing( false );
if ( !item.title().trim() ) {
self.remove( item );
}
};
完整的小提琴在这里演示:http://jsfiddle.net/hUA9v/5/
相关文章:
- 将事件聚焦/模糊在可编辑内容的元素上
- 如何将运动模糊尾巴添加到圆圈中的 svg 元素
- JQuery无法将模糊事件绑定到所有<输入>页面中的元素
- 当移除子元素时,我得到一个错误;模糊”;事件
- 聚焦和模糊错误元素触发的事件
- 当发生模糊事件时,如何在元素上备份选定的文本
- 模糊 DOM 元素时会发生什么
- 如果单击焦点元素的子元素,则会在获得焦点的父元素上触发模糊事件
- 在调用窗口模糊(浏览器失去焦点)时避免元素模糊处理程序
- 隐藏元素对焦并显示模糊
- 对除元素以外的主体应用模糊
- j查询模糊/聚焦未在动态添加的元素上触发
- 处理通过聚焦在子元素上并通过单击子元素外部触发的父元素的模糊事件
- 如果新关注的元素不是子元素,则jQuery模糊
- 如何使用滚动模糊元素,直到它'It’模糊到一定程度
- 如何在javascript中从焦点模糊事件中获取元素值
- 模糊匹配元素内的文本到时间字符串
- AngularJS-未触发要模糊的绑定元素
- jQuery -删除模糊元素,但捕捉点击他的孩子
- 模糊元素及其父元素,在元素的模糊处理程序运行之前