# HG changeset patch # User Mads Kiilerich # Date 1509416272 -3600 # Node ID 781b28e55b9efe668e53de3c7eacd62b7fb97fdb # Parent 7b73f54d84dc0964f0255c911bf65d608690b4bc js: set cursor position after @mention selection Based on work by Dominik Ruff and Stack Overflow. diff -r 7b73f54d84dc -r 781b28e55b9e kallithea/public/js/base.js --- a/kallithea/public/js/base.js Tue Oct 31 03:16:58 2017 +0100 +++ b/kallithea/public/js/base.js Tue Oct 31 03:17:52 2017 +0100 @@ -1200,7 +1200,7 @@ var elLI = aArgs[1]; // reference to the selected LI element var oData = aArgs[2]; // object literal of selected item's result data myAC.getInputEl().value = $container.data('before') + oData.nname + ' ' + $container.data('after'); - myAC.getInputEl().focus(); // Y U NO WORK !? + _setCaretPosition($(myAC.getInputEl()), myAC.dataSource.before.length + oData.nname.length + 1); }); } @@ -1228,6 +1228,25 @@ }); } + +// Set caret at the given position in the input element +function _setCaretPosition($inputElement, caretPos) { + $inputElement.each(function(){ + if(this.createTextRange) { // IE + var range = this.createTextRange(); + range.move('character', caretPos); + range.select(); + } + else if(this.selectionStart) { // other recent browsers + this.focus(); + this.setSelectionRange(caretPos, caretPos); + } + else // last resort - very old browser + this.focus(); + }); +} + + var addReviewMember = function(id,fname,lname,nname,gravatar_link,gravatar_size){ var displayname = nname; if ((fname != "") && (lname != "")) {