• 사건발단 > sms 구축 프로젝트 중, 문자내용입력중 중간에 지정된 위치선택후, 그위치에 특수문양을 넣는 기능추가요청이 들어옴.
  • 해결내용 >
    1. 회사동료분이 구해구해서 작동이 가능한 소스를 찾아냄
    2.  IE전용 기능이라는 제약으로 인해 Firefox에서 사용가능하도록 수정
  • 소스내용 >
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> textarea </title>
      <script type="text/javascript">
      <!--
      function saveCurrentPos (objTextArea) {
        if (objTextArea.createTextRange)
            objTextArea.currentPos = document.selection.createRange().duplicate();
      }
     
      function insertText (objTextArea, text) {
        if (document.selection || (objTextArea.createTextRange && objTextArea.currentPos)) { // for ie
            var currentPos = objTextArea.currentPos;
            currentPos.text =
                currentPos.text.charAt(currentPos.text.length - 1) == ' ' ?
                    text + ' ' : text;
        } else { // for ff
            selected = true;
            var scroll = objTextArea.scrollTop;
            var start = objTextArea.selectionStart;
            var end = objTextArea.selectionEnd;
            objTextArea.value = objTextArea.value.substring(0, start) + text
                + objTextArea.value.substring(end, objTextArea.value.length);
            if (selected) objTextArea.setSelectionRange(start, start+text.length);
            else objTextArea.setSelectionRange(start+text.length, start+text.length);
            objTextArea.scrollTop = scroll;
        }
    }
      //-->
      </script>
     </head>

     <body>
     <form name="myForm">
    <textarea name="myTextArea" rows="5" cols="80" wrap="soft"
           onselect="saveCurrentPos(this)"
           onclick="saveCurrentPos(this)"
           onkeyup="saveCurrentPos(this)">
    배고파~~!!

    </textarea>
    <br />
    <input type="text" id="myText" name="myText" size="80" value="정말멋져요!!" />
    <br />
    <input type="button" value="텍스트 삽입"
                onclick="insertText(this.form.myTextArea, this.form.myText.value)" />
    </form>
     </body>
    </html>
  • 예제화면 >