2

我正在尝试为具有输入 [type="password"] 的文本框显示占位符文本(输入密码)。现在我正在尝试将input[type="password"]更改为 input[type="text"]以显示占位符,如果用户单击文本框,我再次将input[type="text"]更改为输入[type="密码"]。在这里它不起作用请检查脚本
我的jsfiddle 在这里

 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));
});

​</p>

4

3 回答 3

1

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

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

于 2012-12-21T05:01:51.407 回答
1

一个简单的代码更改可能适用于大多数浏览器(当然除了 IE6)。您正在使用 removeAttr 然后设置属性“类型”的属性,而不是使用这一行:

代替:

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

和:

  thisEl.get(0).type = type;

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

于 2012-12-21T05:53:46.160 回答
1

这是一个小提琴

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();
    });
});​
于 2012-12-21T04:57:45.303 回答