onkeyup, onkeydown에서의 문제

국내에 웹 사이트들이 웹 표준을 지키고 OS나 브라우저와 관계 없이 접근성을 향상 시키기 위한 사이트 버그 신고 및 문제 해결을 위한 게시판입니다.
Post Reply
-_-;

onkeyup, onkeydown에서의 문제

Post by -_-; »

다름이 아니라 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";
}
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest