设置textarea输入时页面不自动滚动至光标处
时间: 2024-10-01 14:03:59 浏览: 43
在HTML中,当textarea元素获得焦点并开始接收用户输入时,默认情况下页面会自动滚动到textarea的光标位置。如果你想避免这种自动滚动,可以设置textarea的`autofocus`属性为`false`,并在需要的时候手动调用`focus()`方法聚焦输入框。同时,你还可以禁用`scrollIntoView`的行为,这通常发生在用户按下回车键时。
下面是一个例子:
```html
<textarea id="myTextarea" autofocus=false></textarea>
<script>
var textarea = document.getElementById('myTextarea');
// 点击按钮时聚焦文本框但不自动滚动
function focusWithoutScroll() {
textarea.focus();
}
</script>
```
然后,在JavaScript里,你可以添加事件监听器,如点击按钮时触发`focusWithoutScroll`函数:
```javascript
document.querySelector('.myButton').addEventListener('click', focusWithoutScroll);
```
相关问题
uniapp设置textarea输入时页面不自动滚动至光标处
在uniApp中,如果你想要在textarea输入框聚焦时页面能自动滚动到光标位置,你可以通过监听`input`事件并手动控制滚动条来实现。首先,在textarea元素上绑定`input`事件:
```html
<view class="content">
<textarea v-model="text" @input="scrollToCursor"></textarea>
</view>
```
然后在你的Vue组件的script部分添加相应的处理函数:
```javascript
export default {
data() {
return {
text: '',
};
},
methods: {
scrollToCursor(e) {
// 获取textarea元素及光标位置
const textarea = this.$refs.textarea;
const cursorRect = textarea.getBoundingClientRect();
const cursorTop = cursorRect.top + window.pageYOffset; // 光标距离视口顶部的像素
// 滚动页面到光标位置
if (cursorTop > document.documentElement.scrollTop) {
window.scrollTo({
top: cursorTop,
behavior: 'smooth', // 使用平滑滚动效果
});
}
},
},
};
```
这里的关键是`getBoundingClientRect()`方法获取到光标的矩形区域,然后计算出光标距离视口顶部的位置。如果这个位置高于当前滚动位置,就使用`window.scrollTo()`方法滚动到那个位置。
阅读全文