js获取输入框中当前光标位置并在此位置插入字符串的方法(angularjs+ts)
一半是参照别人代码,一半是自己代码,略笨拙,如果有更好的方法希望分享。
- 获取当前光标位置的方法
-
getCaretPosition (obj:any) { //获取输入框中当前光标的位置,obj为此输入框 let $scope = this.$scope; let $log = this.$log; $scope.caretPosition = 0; if (document.selection) { obj.focus(); var oSel = document.selection.createRange(); oSel.moveStart('character', -obj.value.length); $scope.caretPosition = oSel.text.length; }else if (obj.selectionStart || obj.selectionStart == '0'){ $scope.caretPosition = obj.selectionStart; } console.log( $scope.caretPosition) }
2.在当前光标位置处插入字符串
-
insert_flg(oldStr:any,insertStr:any,caretPos:any){ //oldStr:原字符串,insertStr:要插入的字符串,caretPos:要插入的位置 var newstr=""; var tmp1=oldStr.substring(0, caretPos); var tmp2=oldStr.substring(caretPos,oldStr.length ); newstr+=tmp1+insertStr+tmp2; return newstr; }
调用时传入的第三个参数就是第一步中获取到的当前光标位置。