如何通过输入press =表单提交或仅仅因为点击而导致焦点输出事件发生?进入控制台的事件数据类型为“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);
});
答案 0 :(得分:0)
编辑:正如Oriol在评论中指出的那样,这在Mozilla中无效。如果您只关注webkit浏览器,可以尝试这种方法。但作为通用解决方案,尝试在提交按钮上绑定事件并连续设置标识元素的标志。根据元素,您可以检测它是否是实际模糊。
您可以在relatedTarget
中查找event
属性。
演示:http://jsfiddle.net/GCu2D/782/
JS:
$(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。