我正在尝试为输入[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));
});
答案 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中显示“占位符”文本。
答案 2 :(得分:1)
您可以在大多数浏览器中使用简单的代码更改(IE6之外的浏览器)。您正在使用removeAttr,然后将属性'type'设置为attr,而是使用以下单行:
取代:
thisEl.removeAttr("type");
thisEl.attr('type','text');
使用:
thisEl.get(0).type = type;
查看更新后的小提琴http://jsfiddle.net/9HagB/7/