jquery focusout ==提交

时间:2015-07-18 11:57:57

标签: javascript jquery

如何通过输入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);
    });

1 个答案:

答案 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。