diff --git a/boards/static/js/panel.js b/boards/static/js/panel.js --- a/boards/static/js/panel.js +++ b/boards/static/js/panel.js @@ -35,12 +35,7 @@ function addMarkToMsg(start, end) { for (var i = 0; i < textareas.length; i++) { var textarea = textareas[i]; - if (document.selection) { - textarea.focus(); - - var sel = document.selection.createRange(); - sel.text = start + sel.text + end; - } else if (textarea.selectionStart || textarea.selectionStart == '0') { + if (textarea.selectionStart || textarea.selectionStart == '0') { textarea.focus(); var startPos = textarea.selectionStart; @@ -50,6 +45,11 @@ function addMarkToMsg(start, end) { textarea.value = oldValue.substring(0, startPos) + start + oldValue.substring(startPos, endPos) + end + oldValue.substring(endPos, oldValue.length); + + if (startPos == endPos) { + var newPos = startPos + start.length; + textarea.setSelectionRange(newPos, newPos); + } } else { textarea.value += start + end; } diff --git a/boards/static/js/thread.js b/boards/static/js/thread.js --- a/boards/static/js/thread.js +++ b/boards/static/js/thread.js @@ -30,14 +30,8 @@ var REPLY_TO_MSG_ID = '#reply-to-message var $html = $("html, body"); function moveCaretToEnd(el) { - if (typeof el.selectionStart == "number") { - el.selectionStart = el.selectionEnd = el.value.length; - } else if (typeof el.createTextRange != "undefined") { - el.focus(); - var range = el.createTextRange(); - range.collapse(false); - range.select(); - } + var newPos = el.val().length; + el[0].setSelectionRange(newPos, newPos); } function getForm() { @@ -95,8 +89,7 @@ function addQuickReply(postId) { textAreaJq.focus(); - var textarea = document.getElementsByTagName('textarea')[0]; - moveCaretToEnd(textarea); + moveCaretToEnd(textAreaJq); } } @@ -122,8 +115,7 @@ function addQuickQuote() { textAreaJq.focus(); - var textarea = document.getElementsByTagName('textarea')[0]; - moveCaretToEnd(textarea); + moveCaretToEnd(textAreaJq); } function scrollToBottom() {