如何防止文本区域滚动到顶部时,它的值改变
How to prevent textarea from scrolling to the top when its value changed?
考虑以下示例:(现场演示)
HTML:<textarea></textarea>
<div id="button">Click Here</div>
CSS: textarea {
height: 80px;
width: 150px;
background-color: #bbb;
resize: none;
border: none;
}
#button {
width: 150px;
background-color: #333;
color: #eee;
text-align: center;
}
JS:
$(function() {
var textarea = $("textarea");
textarea.val("Hello'nStack'nOverflow!'nThere'nAre'nLots'nOf'nGreat'nPeople'nHere");
$("#button").click(function() {
textarea.val(textarea.val() + "!");
});
textarea.scrollTop(9999).focus(); // Arbitrary big enough number to scroll to the bottom
});
当点击#button
时,textarea
的值改变,并且由于某种原因滚动条移到顶部(我在Firefox中检查过,不确定其他浏览器是否如此)。
为什么会这样?
我该如何解决这个问题?
我在这里找到了一个可能的解决方案,但我想知道是否还有其他解决方案。
您可以保存scrollTop偏移量,设置其值,并将scrollTop重置为旧偏移量:
var $textarea = ...;
var top = $textarea.scrollTop();
$textarea.val('foo');
$textarea.scrollTop(top);
试试:http://jsfiddle.net/QGJeE/7/
另一个解决方案(很难暗示,因为没有唯一的跨浏览器方式):
不改变textarea的值,而是创建textarea内容的textRange并修改range文本
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- jQuery粘性插件可变顶部间距
- 使用jQuery更改元素的顶部位置
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 背景图像顶部的滚动图像不移动
- 滚动然后捕捉到顶部而不是取消捕捉
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 为什么使用immutableJS我的状态没有改变
- JavaScript改变了双方的显示风格
- 当偏移量改变时滚动顶部
- 改变滚动的顶部值
- 当滚动条到达页面顶部时,它会改变高度
- Angular:在改变视图时禁用滚动到顶部
- jQuery -改变宽度使页面跳转到顶部
- 如何防止文本区域滚动到顶部时,它的值改变
- 为什么当改变路由时,ng-view不滚动到页面顶部?
- 改变总是在顶部的菜单与褪色的php/js
- 滚动时改变导航条固定顶部的颜色
- Safari文本跳跃/闪烁时,改变边距顶部