9

我正在制作一个登录表单,其中有两个字段-

简化:

<input type="text">
<input type="password" placeholder="1234567" >

在我的测试(FF、Chrome)中,占位符显示灰色文本。如何在密码“点”中包含占位符文本? 并且在 IE 中有占位符支持?

例如。用户看到的是伪造的灰色密码,而不是文本 1233467。

(我有 jquery 可用)

非常感谢,

哈雷

编辑:看起来这是使用占位符的错误方法。但是,如何获得 IE 支持?谢谢

4

3 回答 3

46

尝试在占位符中使用密码点代码,如下所示:

placeholder="&#9679;&#9679;&#9679;&#9679;&#9679;"

有关 IE 中的支持,请参阅其他线程,例如 Showing Placeholder text for password field in IEplaceholder works for text but not password box in IE/Firefox using this javascript

于 2012-07-17T14:05:00.270 回答
2

要回答您更新的问题,

我正在建立这个线程中给出的答案。

将表单包装在 span 元素中。然后,您可以在密码字段上添加一个标签作为占位符。最后,为了在输入密码时删除标签,绑定密码字段的按键并从标签中删除文本。这是代码示例,您可能需要更改 id:

<span style="position: relative;">
<input id="password" type="password" placeholder="Password" >
<label id="placeholder" style="font: 0.75em/normal sans-serif; left: 5px; top: 3px; width: 147px; height: 15px; color: rgb(186, 186, 186); position: absolute; overflow-x: hidden; font-size-adjust: none; font-stretch: normal;" for="password">Password</label>
</span>
<script type="text/javascript">
    $(document).ready(function(){
        $('#password').keypress(function(){
            $('#placeholder').html("");
        });
    });
</script>
于 2012-07-17T15:12:25.050 回答
1

尽管我从用户体验的角度反对这一点,但我会为此提供答案。

不要使用 HTML5 属性placeholdervalue而是使用。

<input type="password" value="1234567">

然后focus,将 替换为value空字符串。

var inputs = document.getElementsByTagName('input'),
    i = 0;
for (i = inputs.length; i--;) {
  listenerForI(i);
}

function listenerForI(i) {
  var input = inputs[i],
      type = input.getAttribute('type'),
      val = input.value;
  if (type === 'password') {
    input.addEventListener('focus', function() {
      if (input.value === val) input.value = '';
    });
    input.addEventListener('blur', function() {
      if (input.value === '') input.value = val;
    });
  }
}

我想重申我不推荐这种方法,但这会满足您的需求。

编辑:

placeholder如果您的浏览器不支持使用 jQuery ,请访问此页面,该页面将模拟功能: http ://www.cssnewbie.com/cross-browser-support-for-html5-placeholder-text-in-forms/

于 2012-07-17T14:02:17.137 回答