在我们的实际开发应用中,经常会使用到ext的常用控件textarea。对于一些form表单,录入信息的备注,简介等等信息较多的时候就会使用的textarea。最近在所一个全网拓扑图的时候,以及网络诊断ping,telnet连接测试等等功能的时候,出现了一些比较辣手的问题。就是通过ajax请求后台数据后,把新数据动态的显示到textarea中,textarea的滚动条不会定位到最底部。始终显示在top的位置。经过研究发现,ext对自身的textarea进行了封装,使用table布局。我们根据getCmp()方法获取的控件对象实际上是一个table,这是我们在对table设置它的scrollTop和获取它的scrollHeight属性都会失败。而我们真正需要的是textarea本身,而不是它的父组件table。
这里我把我的实现方法分享给各位网友,使大家少走一些弯路。
<pre name="code" class="javascript">xtype:'container', region:'center', layout:'fit', items:[{ margin:'10 20 0 0', xtype : 'textarea', grow : true, id : 'textarea_id', fieldLabel: '', readOnly :true, autoScroll : true }解决方案1:
var textarea=Ext.getCmp('textarea_id'); textarea.bodyEl.dom.childNodes[0].scrollTop=textarea.bodyEl.dom.childNodes[0].scrollHeight;解决方案2:
document.getElementById('textarea_id-inputEl').scrollTop = document.getElementById('textarea_id-inputEl').scrollHeight;经过测试,两种方案都可以使用。