簡體   English   中英

在IE中獲得插入符位置僅適用於一種情況,不適用於另一種情況

[英]Getting caret position in IE works in one scenario, doesn't in another

我在HTML標記中有一個input元素,如下所示:

<input type="text" name="s" id="s" value="" />

我正在通過使用jQuery的keypress更改使用Urdu字符(例如迷你虛擬鍵盤)在此輸入元素中輸入的字符:

$("#s").keypress(function(e) {
    var pos = getCaretPos('s');
    // key-mapping logic here
});

我還具有一些按鈕,可通過單擊相應按鈕來幫助用戶輸入所需的烏爾都語字符。 從而:

// Process clicks on buttons with class=kb-letter
$(".kb-letter").click(function() {
    var pos = getCaretPos('s');
    // logic for entering Urdu characters in 's' here
});

這是獲取插入符位置的功能。 它返回s的當前插入符號位置,然后在該位置插入新字符:

function getCaretPos(areaId) {
    var txtArea = document.getElementById(areaId);
    var pos = 0;
    var br = (document.selection ? "ie" : ((txtArea.selectionStart || txtArea.selectionStart == '0') ? "ff" : false ) );
    if (br == "ie") { 
        txtArea.focus();
        var range = document.selection.createRange();
        range.moveStart ('character', -txtArea.value.length);
        pos = range.text.length;
    }
    else if (br == "ff") {
        pos = txtArea.selectionStart;
    }

    return pos;
}

現在,上面的getCaretPos()在Firefox 8和Chrome 17中都可以在s直接鍵盤輸入和使用單擊按鈕進行輸入的情況下正常工作; 但是在Internet Explorer 8上,它適用於直接鍵盤輸入。 如果我嘗試使用鼠標單擊輸入字符,則會在位置0處輸入該字符,因為在這種情況下getCaretPos()始終返回0。

我不知道出了什么問題。 我是否需要以其他方式調用getCaretPos()來響應IE的鼠標單擊?

沒關系。 我正在使用一個無序列表,其<li>冒充為鍵盤按鈕。 由於某些原因,IE遇到了問題。 我將<li>替換為<button> ,現在getCaretPos()正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM