设置文本框输入的占位符[type =“password”]

时间:2012-12-21 04:43:52

标签: javascript jquery

我正在尝试为输入[type =“password”]的文本框显示占位符文本(输入密码)。现在我正在尝试将输入[type =“password”] 更改为输入[type =“text”] 以显示占位符以及用户是否单击文本框我再次将输入[type =“text”] 更改为输入[type =“password”] 。这里不起作用请检查脚本
我的 jsfiddle is here

 function setupPasswordPlaceholder(thisEl)
    {
        if('' !== thisEl.attr("alt"))
        {
            if('' === thisEl.val())
            {
                thisEl.val(thisEl.attr("alt"));
                thisEl.removeAttr("type");
                thisEl.attr('type','text');
                thisEl.css({'font-weight':'normal','font-size':'10pt','color':'#999','font-family': '"lucida grande", tahoma, verdana, arial, sans-serif'});
            }
            thisEl.focus(function()
            {        
                if(thisEl.val() == thisEl.attr("alt")) 
                {
                    thisEl.val("");
                    thisEl.removeAttr("type");
                    thisEl.attr('type','password');
                    thisEl.css({'color': '#18A505','font-size': '10pt','font-weight':'normal'});
                }

        });

        thisEl.focusout(function()
        {        
            if('' === thisEl.val()) 
            {
                thisEl.val(thisEl.attr("alt"));
                thisEl.removeAttr("type");
                thisEl.attr('type','text');
                thisEl.css({'font-weight':'normal','font-size':'10pt','color':'#999','font-family': '"lucida grande", tahoma, verdana, arial, sans-serif'});
            }
        });
    }
}



$("input[type='password']").each(function(){
        setupPasswordPlaceholder($(this));
});

3 个答案:

答案 0 :(得分:1)

这是 Fiddle

HTML:

    <input style="display: none; " id="fakepasscode" type="password" autocomplete="off">
    <input style="display: inline;" id="passcode" hint="password" type="text" autocomplete="off">

JavaScript的:

var clearField = function() {
    if ($("#passcode").val() != "password") {
        $("#passcode").val("");
    }
}

var resetField = function() {
    if ($("#passcode").val().length == 0) $("#passcode").val("password");
}


var pwdFocus = function() {
    $("#passcode").hide();
    $("#fakepasscode").val("");
    $("#fakepasscode").show();
    $("#fakepasscode").focus();
}

var pwdBlur = function() {
    if ($("#fakepasscode").val() == "") {
        $("#fakepasscode").hide();
        $("#passcode").show();
    }
}

var setupHintField = function() {
    $("#passcode").unbind("focus blur change");
    $("#passcode").focus(function() {
        clearField();
    });
    $("#passcode").blur(function() {
        resetField();
    });
    $("#passcode").change(function() {
        resetField();
    });
    $("#passcode").show();
    $("#fakepasscode").hide();
}


$(document).ready(function() {
    $("#passcode").val($("#passcode").attr("hint"));
    setupHintField();
    $("#passcode").unbind("focus");
    $("#passcode").focus(function() {
        pwdFocus();
    });
    $("#fakepasscode").blur(function() {
        pwdBlur();
    });
});​

答案 1 :(得分:1)

我看到的常见解决方案是使用标签或其他输入框在IE中显示“占位符”文本。

请看这个优秀的答案:https://stackoverflow.com/a/7225820/988355

答案 2 :(得分:1)

您可以在大多数浏览器中使用简单的代码更改(IE6之外的浏览器)。您正在使用removeAttr,然后将属性'type'设置为attr,而是使用以下单行:

取代:

  thisEl.removeAttr("type");
  thisEl.attr('type','text');

使用:

  thisEl.get(0).type = type;

查看更新后的小提琴http://jsfiddle.net/9HagB/7/