Javascript 在IE中获得插入符号位置在一种情况下有效,在另一种情况下不起作用

Javascript 在IE中获得插入符号位置在一种情况下有效,在另一种情况下不起作用,javascript,jquery,Javascript,Jquery,我在HTML标记中有一个输入元素,如下所示: <input type="text" name="s" id="s" value="" /> 我也有一些按钮,帮助用户通过点击相应的按钮来输入他们想要的乌尔都语字符。因此: // Process clicks on buttons with class=kb-letter $(".kb-letter").click(function() { var pos = getCaretPos('s'); // logic for

我在HTML标记中有一个输入元素,如下所示:

<input type="text" name="s" id="s" value="" />
我也有一些按钮,帮助用户通过点击相应的按钮来输入他们想要的乌尔都语字符。因此:

// 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中直接键盘输入,也可以通过点击按钮进行输入;但在InternetExplorer8上,它只适用于直接键盘输入。如果我尝试使用鼠标单击输入字符,它将在位置0处输入,因为在这种情况下getCaretPos始终返回0


我不知道出了什么问题。我是否需要以不同的方式调用getCaretPos以响应IE的鼠标单击?

没关系。我使用的是一个无序列表,它的s冒充键盘按钮。由于某种原因(与他们有问题)。我用s替换了s,现在getCaretPos工作正常

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;
}