Set text-cursor position in a textarea

前端 未结 6 2114
眼角桃花
眼角桃花 2021-01-01 13:18

I\'m working on a BBCode editor and here is the code:

var txtarea = document.getElementById(\"editor_area\");

            function boldText() {
                     


        
6条回答
  •  Happy的楠姐
    2021-01-01 13:35

    After refocusing the textarea with txtarea.focus(), add this line:

    txtarea.selectionEnd= end + 7;
    

    That will set the cursor seven positions ahead of where it was previously, which will take [b][/b] into account.

    Example

    document.getElementById('bold').addEventListener('click', boldText);
    
    function boldText() {
      var txtarea = document.getElementById("editor_area");
      var start = txtarea.selectionStart;
      var end = txtarea.selectionEnd;
      var sel = txtarea.value.substring(start, end);
      var finText = txtarea.value.substring(0, start) + '[b]' + sel + '[/b]' + txtarea.value.substring(end);
      txtarea.value = finText;
      txtarea.focus();
      txtarea.selectionEnd= end + 7;
    }
    #editor_area {
      width: 100%;
      height: 10em;
    }
    
    

提交回复
热议问题