2015-01-27 3 views
-1

주요 문제는 라틴 키보드를 사용해도 조지 왕조 문자를 입력하고 싶다는 것입니다. 내 코드는 다음과 같이 작동합니다. keydown에서 눌려진 키의 문자를 가져온 다음 해당 문자를 찾은 다음 필드의 값에 char을 추가합니다. 코드가 제대로 작동하지만 입력 가장자리에 오면 문자열이 움직이지 않아 업데이트 된 값을 볼 수 없습니다. 나는 keyup에 대한 입력에 초점을 맞추려고 노력했지만 도움이되지 않는다. 문제를 해결하는 방법에 대한 아이디어가 있습니까? 도움에 미리 감사드립니다. http://jsfiddle.net/4dczfknx/입력 값 변경

문제는 크롬에 : 여기

var aaa = {}; 
    aaa["a"] = "0x10d0"; 


    aaa["b"] = "0x10d1"; 
    aaa["g"] = "0x10d2"; 
    aaa["d"] = "0x10d3"; 
    aaa["e"] = "0x10d4"; 
    aaa["v"] = "0x10d5"; 
    aaa["z"] = "0x10d6"; 

    aaa["T"] = "0x10d7"; // t 
    aaa["i"] = "0x10d8"; 
    aaa["k"] = "0x10d9"; 
    aaa["l"] = "0x10da"; 
    aaa["m"] = "0x10db"; 
    aaa["n"] = "0x10dc"; 
    aaa["o"] = "0x10dd"; 
    aaa["p"] = "0x10de"; 
    aaa["J"] = "0x10df"; // zh 
    aaa["r"] = "0x10e0"; 
    aaa["s"] = "0x10e1"; 
    aaa["t"] = "0x10e2"; // t 

    aaa["u"] = "0x10e3"; 
    aaa["f"] = "0x10e4"; 
    aaa["q"] = "0x10e5"; 
    aaa["R"] = "0x10e6"; // gh/g 
    aaa["y"] = "0x10e7"; 
    aaa["S"] = "0x10e8"; // sh 
    aaa["C"] = "0x10e9"; // ch 
    aaa["c"] = "0x10ea"; // ts 
    aaa["Z"] = "0x10eb"; // dz 
    aaa["w"] = "0x10ec"; // ts 
    aaa["W"] = "0x10ed"; // ch/tch 
    aaa["x"] = "0x10ee"; // kh 
    aaa["j"] = "0x10ef"; 
    aaa["h"] = "0x10f0"; 

    var aab = {}; 
    for (var key in aaa) { 
    aab[aaa[key]]=key; 
    } 

    window.onload = function() { 
    var tbox_lemma = document.getElementById("tbox_lemma"); 
    tbox_lemma.onkeypress = function(e) { 
     e = e || window.event; 
     var keycode = e.charCode || e.keyCode; 
     var c = String.fromCharCode(keycode); 
     if(c in aaa) { 
     var txtToAdd = String.fromCharCode(aaa[String.fromCharCode(keycode)]); 
     var caretPos1 = tbox_lemma.selectionStart; 
     var caretPos2 = tbox_lemma.selectionEnd; 
     var val = tbox_lemma.value; 
     tbox_lemma.value = val.substring(0, caretPos1) + txtToAdd + val.substring(caretPos2); 
     tbox_lemma.selectionStart = caretPos1 + 1; 
     tbox_lemma.selectionEnd = tbox_lemma.selectionStart; 
     return false; 
     } 
    }; 
    }; 

는 그것의 바이올린입니다. 파이어 폭스에서 잘 작동합니다. 당신이 jQuery를 사용하여 질문을 태그 때문에

답변

1

, 당신의 온로드 기능의 끝에 다음 행을 추가 :

$('#tbox_lemma').blur().focus().val($('#tbox_lemma').val()); 

속임수를 썼는지 JSFiddle demo

+0

! 도와 줘서 고마워. :> – gogachinchaladze

+0

지금 문제는 Firefox에서 작동하지 않는다는 것입니다. ( – gogachinchaladze

+0

아니요 인터넷 탐색기에서 – gogachinchaladze