- 사건발단 > sms 구축 프로젝트 중, 문자내용입력중 중간에
지정된 위치선택후, 그위치에 특수문양을 넣는 기능추가요청이 들어옴.
- 해결내용 >
- 회사동료분이 구해구해서 작동이 가능한 소스를 찾아냄
- 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>
- 예제화면 >