[关闭]
@YDS 2017-07-29T13:23:21.000000Z 字数 2404 阅读 381

蜜汁textarea

js


使textarea可以达到具有默认提示文字,且当用户输入文字时提示文字自动删除,并且由提示文字的字体颜色浅灰色变为正常的输入文字黑色,可通过js实现。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  6. <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
  7. <title>title</title>
  8. <style>
  9. #textarea{
  10. overflow:hidden;
  11. margin-top:2rem;
  12. margin-left:0.5rem;
  13. height:10rem;
  14. width:95%;
  15. outline: none;
  16. border:0;
  17. background:#f9f9f9;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <textarea id="textarea" placeholder="添加作品描述,如:塔米APP的iOS主开发工程师,负责整体架构设计..."></textarea>
  23. </body>
  24. <script type="text/javascript" src="../script/api.js"></script>
  25. <script type="text/javascript">
  26. apiready = function(){
  27. };
  28. var autoTextarea = function (elem, extra, maxHeight) {
  29. extra = extra || 0;
  30. var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window,
  31. isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'),
  32. addEvent = function (type, callback) {
  33. elem.addEventListener ?
  34. elem.addEventListener(type, callback, false) :
  35. elem.attachEvent('on' + type, callback);
  36. },
  37. getStyle = elem.currentStyle ? function (name) {
  38. var val = elem.currentStyle[name];
  39. if (name === 'height' && val.search(/px/i) !== 1) {
  40. var rect = elem.getBoundingClientRect();
  41. return rect.bottom - rect.top -
  42. parseFloat(getStyle('paddingTop')) -
  43. parseFloat(getStyle('paddingBottom')) + 'px';
  44. };
  45. return val;
  46. } : function (name) {
  47. return getComputedStyle(elem, null)[name];
  48. },
  49. minHeight = parseFloat(getStyle('height'));
  50. elem.style.resize = 'none';
  51. var change = function () {
  52. var scrollTop, height,
  53. padding = 0,
  54. style = elem.style;
  55. if (elem._length === elem.value.length) return;
  56. elem._length = elem.value.length;
  57. if (!isFirefox && !isOpera) {
  58. padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom'));
  59. };
  60. scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  61. elem.style.height = minHeight + 'px';
  62. if (elem.scrollHeight > minHeight) {
  63. if (maxHeight && elem.scrollHeight > maxHeight) {
  64. height = maxHeight - padding;
  65. style.overflowY = 'auto';
  66. } else {
  67. height = elem.scrollHeight - padding;
  68. style.overflowY = 'hidden';
  69. };
  70. style.height = height + extra + 'px';
  71. scrollTop += parseInt(style.height) - elem.currHeight;
  72. document.body.scrollTop = scrollTop;
  73. document.documentElement.scrollTop = scrollTop;
  74. elem.currHeight = parseInt(style.height);
  75. };
  76. };
  77. addEvent('propertychange', change);
  78. addEvent('input', change);
  79. addEvent('focus', change);
  80. change();
  81. };
  82. </script>
  83. <script type="text/javascript">
  84. var text=document.getElementById("textarea");
  85. autoTextarea(text);//调用
  86. </script>
  87. </html>
  88. </html>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注