【问题标题】:Removing focus from form field (working in FF but not IE)从表单字段中移除焦点(在 FF 中工作,但不在 IE 中)
【发布时间】:2011-07-11 13:12:36
【问题描述】:

我正在使用 javascript 表单验证和 jquery 来显示错误消息并突出显示字段。

当前的行为是当您单击提交时,验证运行并返回错误消息,并且当用户单击返回该字段时,错误消息消失但表单突出显示(该字段周围的红色边框)仍然存在 - 直到用户再次提交表单。

需要的其他行为(在 firefox 中工作但在 IE 中不工作)是当错误状态弹出时,返回错误的字段应该失去焦点,并且用户必须单击返回该字段(然后删除错误信息)。在 IE 中,焦点永远不会被移除。

<script language="JavaScript" type="text/javascript">
<!--Jquery function to override JS alert with DOM layer alert message-->
function customAlert(){
    var args = arguments;
    if(args.length > 1) {
        // check that custom alert was called with at least two arguments
        var msg = args[0];
        $("li").removeClass("alertRed");
        $("input").removeClass("CO_form_alert");
        $("select").removeClass("CO_form_alert");
        var div = $(".errorPopup");
        div.css({"display":"block"});
        if (div.length == 0) {
            div = $("<div class='errorPopup' onclick='$(this).hide();'></div>");
            $("body").prepend(div);
        }
        div.html(msg);
        for(var i = 1; i < args.length; i++) {
            var inputID = args[i];
           $("#"+inputID).addClass("CO_form_alert").parent().addClass("alertRed");
            $("#"+inputID).focus(function(){
                $(this).unbind('focus'); // remove this handler
                $('.errorPopup').hide(); // hide error popup
            });
        }
     }
}

</script>

【问题讨论】:

    标签: javascript jquery forms internet-explorer focus


    【解决方案1】:

    你可以试试unbind('focus')而不是blur()

    编辑:

    Blur Event Does not get Fired in IE7 and IE6

    【讨论】:

    • 刚刚试过了,在 IE 中也不能正常工作。
    • 你用的是什么版本的jQuery?
    • 你可以试试这个...stackoverflow.com/questions/1277372/…
    • 该网站使用 1.4.2 - 并坚持使用它
    • 还有什么可以尝试的吗?我可以将注意力转移到其他事情上吗?
    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多