我的页面需求如下
原本input是不展示的,只有一个搜索icon,点击搜索之后,input弹出,可输入文字进行搜索,但是每次点开的时候,在移动端,光标总是在文字的第一个位置,体验很不好
后来在网上找到一个方法,用selectionStart方法,但是这个方法在pc端是有效果的,到了移动端就不行了,依然做个笔记,万一以后用的到呢
var len = this.searchText.length
if (document.selection) {
var sel = this.$refs.searchInput.createTextRange()
sel.moveStart('character', len) // 设置开头的位置
sel.collapse()
sel.select()
} else if (typeof (this.$refs.searchInput.selectionStart) === 'number' && typeof (this.$refs.searchInput.selectionEnd) === 'number') {
this.$refs.searchInput.selectionStart = this.$refs.searchInput.selectionEnd = len
this.testText = this.$refs.searchInput.selectionStart + ',' + this.$refs.searchInput.selectionEnd
}
// this.$refs.searchInput.moveStart('word', this.searchText.length)
后来找到了一个比较曲线的方法
var tempSearchText = this.searchText
this.searchText = ''
setTimeout(function() {
this.searchText = tempSearchText
}.bind(this), 100)
就是先把搜索框清空,等待100毫秒后再把原来的值赋上,亲测有效
网友评论