打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Javascript 实现 Textarea 自动伸缩,兼容IE6、IE7、IE8、IE9...

Javascript 实现 Textarea 自动伸缩的几种方法:

XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
  
<title>Javascript 实现 Textarea 自动伸缩,兼容IE6、IE7、IE8、IE9、Firefox、Safari、Chome、Opera</title>
  
<style type="text/css">
  textarea{padding-top:0;padding-bottom:0;overflow: hidden;}
  
</style>
</head>
<body>
<table>
  
<tr valign="top">
  
<td>方法1:支持拷贝粘贴、删除操作<br /><textarea id="textarea1" onkeyup="AutoExpand(this)" onfocus="AutoExpand(this)"></textarea></td>
  
<td>方法2:只支持输入<br /><textarea id="textarea"></textarea></td>
  
<td>方法3:只支持输入<br /><textarea onpropertychange="MaxMe(this)" oninput="MaxMe(this)" ontextinput="MaxMe(this)"></textarea></td>
  
</tr>
</table>
<script type="text/javascript">
  var InitHeight = 20;
  function AutoExpand(e) {
    var HideTextarea = document.getElementById("__hidetextarea");
    if (!HideTextarea) {
      HideTextarea = document.createElement("textarea");
      HideTextarea.id = "__hidetextarea";
      HideTextarea.style.borderWidth = 0;
      document.body.appendChild(HideTextarea);
    }
    HideTextarea.value = e.value;
    HideTextarea.style.height = "0px";
    HideTextarea.style.overflow = "hidden";
    var x = HideTextarea.scrollHeight + "必须先计算下scrollHeight的值,否则,scrollHeight 的值将固定?";
    delete x;
    e.style.height = Math.max(Math.max(InitHeight,20), HideTextarea.scrollHeight) + "px";
  }
  function MaxMe(o) {
    if (window.navigator.userAgent.indexOf("Firefox") > -1) {
      o.style.height = o.scrollTop + o.scrollHeight + "px";
    }
    else {
      if (o.scrollTop > 0) o.style.height = o.scrollTop + o.scrollHeight + "px";
    }
  }

  function Init() {
    var t1 = document.getElementById("textarea1");
    InitHeight = t1.offsetHeight;

    var textarea = document.getElementById("textarea");
    if (textarea.addEventListener) {    // 非Internet Explorer和Internet Explorer9之后的版本
      textarea.addEventListener("input", OnTextInput, false);
      // Google Chrome 和 Safari
      textarea.addEventListener("textinput", OnTextInput, false);
    }

    if (textarea.attachEvent) { // Internet Explorer 和 Opera
      textarea.attachEvent("onpropertychange", OnTextInput);
    }
  }

  function OnTextInput(evt) {
    o = window.event ? window.event.srcElement : evt.target;
    if (window.navigator.userAgent.indexOf("Firefox") > -1) {
      o.style.height = o.scrollTop + o.scrollHeight + "px";
    }
    else {
      if (o.scrollTop > 0) o.style.height = o.scrollTop + o.scrollHeight + "px";
    }
  }
  window.onload = Init;
</script>
</body>
</html>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ZeroClipboard支持IE,firefox,Chrome复制到剪贴板
javascript知识点收藏
IE/FF/Chrome下document.documentElement和document.body的 scrollHeight/scrollTop/clientHeight 以及判断滚动条是否已拉
Selenium2+python自动化17
js文字上下,左右滚动js效果,兼容性比较好
花点时间搞清top、postop、scrolltop、scrollHeight、offse...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服