javascript – 用于IE8的占位符代码导致下拉登录字段失去焦点

前端之家收集整理的这篇文章主要介绍了javascript – 用于IE8的占位符代码导致下拉登录字段失去焦点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用IE8的下面的占位符代码,但是在下拉登录字段中移动鼠标时,大约70%的时间会丢失焦点(整个下拉登录字段消失);通过调试 – 当我删除这个代码的问题消失了 – 我发现问题的原因是这段代码

编辑:我发现它不是由任何特定的占位符代码引起的,而是由于某些部分过程引起的,因为我已经尝试了3个独立的占位符插件,并且发生在其中的所有3个;把他们带走,没有问题.

$(document).ready(function() {

    if ( !("placeholder" in document.createElement("input")) ) {
        $("input[placeholder],textarea[placeholder]").each(function() {
            var val = $(this).attr("placeholder");
            if ( this.value == "" ) {
                this.value = val;
            }
            $(this).focus(function() {
                if ( this.value == val ) {
                    this.value = "";
                }
            }).blur(function() {
                if ( $.trim(this.value) == "" ) {
                    this.value = val;
                }
            })
        });

        // Clear default placeholder values on form submit
        $('form').submit(function() {
            $(this).find("input[placeholder],textarea[placeholder]").each(function() {
                if ( this.value == $(this).attr("placeholder") ) {
                    this.value = "";
                }
            });
        });
    }

});

你可以在这里查看一个例子:http://condorstudios.com/stuff/temp/so/header-sample.php

编辑:不知道如果这将有助于jsfiddle不工作在IE8,我不能测试如果小提琴在IE8中表现不好,但这里是小提琴:http://jsfiddle.net/m8arw/7/

任何方式来解决这个问题?

解决方法

您是否尝试过切换您的活动以显示/隐藏“mouseenter”和“mouseleave”的下拉列表?
在IE上比“焦点”和“模糊”事件更可靠.而且,直接在’dropdown’上绑定事件div比’input’元素更好.

简而言之,请尝试改变这段代码.

$(function() {
    var dropdown = $('div.login div.dropdown')
        .on('mouseenter',function() {
            dropdown.css('display','block');
        })
        .on('mouseleave',function() {
            dropdown.removeAttr('style');
        });
});

猜你在找的JavaScript相关文章