UNPKG

mand-mobile

Version:

A Vue.js 2.0 Mobile UI Toolkit

52 lines (49 loc) 1.22 kB
/** * get position of input cursor */ export function getCursorsPosition(ctrl) { /* istanbul ignore if */ if (!ctrl) { return 0 } let CaretPos = 0 // IE Support /* istanbul ignore next */ if (document.selection) { ctrl.focus() const Sel = document.selection.createRange() Sel.moveStart('character', -ctrl.value.length) CaretPos = Sel.text.length } else if (ctrl.selectionStart || ctrl.selectionStart === '0') { // Firefox support CaretPos = ctrl.selectionStart } return CaretPos } let timer = null /** * set position of input cursor */ export function setCursorsPosition(ctrl, pos) { /* istanbul ignore if */ if (!ctrl) { return } /* istanbul ignore if */ if (timer) { clearTimeout(timer) } // Compatible with some Android devices, the synchronized settings will be invalid timer = setTimeout(() => { /* istanbul ignore next */ if (ctrl.setSelectionRange) { ctrl.focus() ctrl.setSelectionRange(pos, pos) } else if (ctrl.createTextRange) { const range = ctrl.createTextRange() range.collapse(true) range.moveEnd('character', pos) range.moveStart('character', pos) range.select() } }, 0) }