如何判断焦点事件是由于enter按下= form submit而发生的,还是仅仅因为单击而引起的?进入控制台的事件数据类型为"focusout“,没有相关信息。
$(".clientrow[clientid="+clientid+"] td."+fieldname+"").bind("focusout", function(event){
console.log(event);
setTimeout(function() {
if (!event.delegateTarget.contains(document.activeElement)) {
$(".clientrow[clientid="+clientid+"] td."+fieldname+"").html(
$(".clientrow[clientid="+clientid+"] td."+fieldname+" input[type=text]").val()
);
}
}, 0);
});发布于 2015-07-18 12:26:34
编辑:正如Oriol在评论中指出的那样,在Mozilla中不起作用。如果您只寻找webkit浏览器,您可以尝试这种方法。但作为一般解决方案,请尝试在submit按钮上绑定事件,并连续设置标识元素的标志。根据元素,您可以检测到它是否是一个实际的模糊。
您可以在relatedTarget中查找event属性。
演示:http://jsfiddle.net/GCu2D/782/
联署材料:
$(document).ready(function () {
$("input").on("blur", function (e) {
console.log(e);
if (e.relatedTarget) {
console.log("Because of button");
} else {
console.log("Just a blur")
}
});
});HTML:
<form>
<input type="text" />
<button type="button">Submit</button>
</form>您必须将focusout替换为blur事件。当由于单击按钮而造成模糊时,relatedTarget属性将以button作为值,但在其他情况下为null。
https://stackoverflow.com/questions/31490917
复制相似问题