[英]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.