【博文转载】HTML5的PLACEHOLDER属性

西风瘦马 发布于 二月 17, 2011

HTML5对Web Form做了许多增强,比如input新增的type类型、Form Validation等。Placeholder是HTML5新增的另一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点时,提示文字消失。以前要实现这效果都是用JavaScript来控制才能实现:

PLAIN TEXT
HTML:

  1. <input id=”t1″ type=”text” placeholder=”请输入文字” />

 

传统方式实现的灰字提示:

placeholder实现的灰字提示:

(如果看不到左边文本框中的文字,说明你的浏览器不支持placeholder)

由于placeholder是个新增属性,目前只有少数浏览器支持,如何检测浏览器是否支持它呢?(更多HTML5/CSS3特性检测可以访问)

PLAIN TEXT
JAVASCRIPT:

  1. function hasPlaceholderSupport() {
  2. return ’placeholder’ in document.createElement(‘input’);
  3. }

 

现在支持的浏览器有:Firefox4.0+、Chrome4.0+、Safari4.0+,Opera 11、IE9 RC2尚不支持。

默认提示文字是灰色的,可以通过CSS来改变文字样式:

PLAIN TEXT
CSS:

  1. /* all */
  2. ::-webkit-input-placeholder { color:#f00; }
  3. input:-moz-placeholder { color:#f00; }
  4. /* individual: webkit */
  5. #field2::-webkit-input-placeholder { color:#00f; }
  6. #field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
  7. #field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
  8. /* individual: mozilla */
  9. #field2:-moz-placeholder { color:#00f; }
  10. #field3:-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
  11. #field4:-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

 

兼容其他不支持placeholder的浏览器:

PLAIN TEXT
JAVASCRIPT:

  1. var PlaceHolder = {
  2. _support: (function() {
  3. return ’placeholder’ in document.createElement(‘input’);
  4. })(),
  5. //提示文字的样式,需要在页面中其他位置定义
  6. className: ’abc’,
  7. init: function() {
  8. if (!PlaceHolder._support) {
  9. //未对textarea处理,需要的自己加上
  10. var inputs = document.getElementsByTagName(‘input’);
  11. PlaceHolder.create(inputs);
  12. }
  13. },
  14. create: function(inputs) {
  15. var input;
  16. if (!inputs.length) {
  17. inputs = [inputs];
  18. }
  19. for (var i = 0, length = inputs.length; i <length; i++) {
  20. input = inputs[i];
  21. if (!PlaceHolder._support && input.attributes && input.attributes.placeholder) {
  22. PlaceHolder._setValue(input);
  23. input.addEventListener(‘focus’, function(e) {
  24. if (this.value === this.attributes.placeholder.nodeValue) {
  25. this.value = ”;
  26. this.className = ”;
  27. }
  28. }, false);
  29. input.addEventListener(‘blur’, function(e) {
  30. if (this.value === ”) {
  31. PlaceHolder._setValue(this);
  32. }
  33. }, false);
  34. }
  35. }
  36. },
  37. _setValue: function(input) {
  38. input.value = input.attributes.placeholder.nodeValue;
  39. input.className = PlaceHolder.className;
  40. }
  41. };
  42. //页面初始化时对所有input做初始化
  43. //PlaceHolder.init();
  44. //或者单独设置某个元素
  45. //PlaceHolder.create(document.getElementById(‘t1′));

 

相关网页:
http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute

 

转载自: http://blog.tugai.net/2011/02/17/html5-placeholder/

 

你可能感兴趣的:(html5,技术博文)