onkeyup, onkeydown에서의 문제
Posted: 2006 03 15 18:47 26
다름이 아니라 TextArea에서 글자의 길이(영문1, 한글2)를 체크하는 문제인데요
onkeyup의 경우 FF는 핸들러 함수로 진입을 못하더군요
IE의 경우는 제대로 되구요
그래서 onkeydown으로 대체하려고 했는데요 onkeydown은 진입은 하더군요
그런데 이또한 제대로 안돌더군요 진입은 하는데 입력된 문자를 계산하는 부분에서 문제가 있는것 같습니다. 이부분도 IE에선 되구요
초라한 코드라 보여드리기 부끄럽습니다만 보고 도움 좀 부탁드립니다
<textarea id="message" wrap="soft" style="padding-top:20" onkeypress="javascript:checkLength(event);"></textarea>
function checkLength(aEvent) {
var iEvent = aEvent ? aEvent : window.event;
var f_message = document.getElementById("message").value;
var lengthDiv = document.getElementById("msgLength");
var keyCode = iEvent.keyCode;
if (keyCode == 16 || keyCode == 17 || keyCode == 18 || keyCode == 27) {
return false;
}
if (keyCode == 144 || keyCode == 145 || keyCode == 20) {
return false;
}
var onechar;
var tcount = 0;
for (k = 0; k < f_message.length; k++) {
onechar = f_message.charAt(k);
if (escape(onechar) == "%0D") {
} else {
if (escape(onechar).length > 4) {
tcount += 2;
} else {
tcount++;
}
}
}
lengthDiv.innerHTML = tcount + "/80 Bytes";
if (tcount > 80) {
alert("under80");
cutText(f_message, 80);
return;
}
}
function cutText(aquery, iLength) {
var tmpStr;
var temp = 0;
var onechar;
var tcount = 0;
var f_message = document.getElementById("message");
var lengthDiv = document.getElementById("msgLength");
tmpStr = new String(aquery);
temp = tmpStr.length;
for (k=0; k < temp; k++) {
onechar = tmpStr.charAt(k);
if (escape(onechar).length > 4) {
tcount += 2;
} else {
if (escape(onechar) == "%0D") {
} else {
tcount++;
}
}
if (tcount > eval(iLength)) {
tmpStr = tmpStr.substring(0, k);
break;
}
}
f_message.value = tmpStr;
lengthDiv.innerHTML = iLength + "/80 Bytes";
}
onkeyup의 경우 FF는 핸들러 함수로 진입을 못하더군요
IE의 경우는 제대로 되구요
그래서 onkeydown으로 대체하려고 했는데요 onkeydown은 진입은 하더군요
그런데 이또한 제대로 안돌더군요 진입은 하는데 입력된 문자를 계산하는 부분에서 문제가 있는것 같습니다. 이부분도 IE에선 되구요
초라한 코드라 보여드리기 부끄럽습니다만 보고 도움 좀 부탁드립니다
<textarea id="message" wrap="soft" style="padding-top:20" onkeypress="javascript:checkLength(event);"></textarea>
function checkLength(aEvent) {
var iEvent = aEvent ? aEvent : window.event;
var f_message = document.getElementById("message").value;
var lengthDiv = document.getElementById("msgLength");
var keyCode = iEvent.keyCode;
if (keyCode == 16 || keyCode == 17 || keyCode == 18 || keyCode == 27) {
return false;
}
if (keyCode == 144 || keyCode == 145 || keyCode == 20) {
return false;
}
var onechar;
var tcount = 0;
for (k = 0; k < f_message.length; k++) {
onechar = f_message.charAt(k);
if (escape(onechar) == "%0D") {
} else {
if (escape(onechar).length > 4) {
tcount += 2;
} else {
tcount++;
}
}
}
lengthDiv.innerHTML = tcount + "/80 Bytes";
if (tcount > 80) {
alert("under80");
cutText(f_message, 80);
return;
}
}
function cutText(aquery, iLength) {
var tmpStr;
var temp = 0;
var onechar;
var tcount = 0;
var f_message = document.getElementById("message");
var lengthDiv = document.getElementById("msgLength");
tmpStr = new String(aquery);
temp = tmpStr.length;
for (k=0; k < temp; k++) {
onechar = tmpStr.charAt(k);
if (escape(onechar).length > 4) {
tcount += 2;
} else {
if (escape(onechar) == "%0D") {
} else {
tcount++;
}
}
if (tcount > eval(iLength)) {
tmpStr = tmpStr.substring(0, k);
break;
}
}
f_message.value = tmpStr;
lengthDiv.innerHTML = iLength + "/80 Bytes";
}