我對IE8(只有IE)有一定的問題,當我將其中的文本輸入字段聚焦在光標移動到該字段的開頭。我試圖在最後設置光標。我周圍的一派,發現了以下解決方案:光標移動到文本字段的開頭
function setSelectionRange(input, selectionStart, selectionEnd) {
input = document.getElementsByTagName("input")[0];
if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}
「輸入」這裏是一個簡單的輸入字段,它是在一個類(var inputElement = this.input;
)。問題是「setSelectionRange」和「createTextRange」。難道我做錯了什麼?是否僅爲TextArea定義了createTextRange?我試過在輸入document.getElementsByTagName(「input」)[0];後輸入js輸入和jquery輸入。我可以去「createTextRange」分支,但它仍然不會改變光標的位置。
@ Edit2:我改變了一下代碼,現在我從文檔中獲取輸入,並進入if分支。但隨後的瀏覽器顯示我:
在此行中var range = input.createTextRange();
@ EDIT3:要回答James的問題。我有一個類,在那個類中,整個事物都與一個有輸入的jsp相關聯。在這一類我設置其與輸入相關領域的重點處理形成JSP inputElement.focus(onInputFocus)
然後我有這樣的事情:
function onInputFocus() {
isFocused = true;
valueDivElement.hide();
labelElement.html(labelFocus);
if (currentData.selectedEntityCode) {
inputElement.val(currentData.selectedEntityCode);
inputElement.attr('title', currentData.selectedEntityCode);
} else {
}
var input = document.getElementsByTagName("input")[0];
input.value = input.value;
}
全班顯然要大得多,這不是我的代碼,但我猜測這是正在執行的最後一件事。
此函數對於`元素可以正常工作。你確定你傳遞的元素是DOM輸入元素嗎? – 2010-11-23 09:59:51
是的,我仔細檢查過它。現在的問題是「var range = input.createTextRange();」不知道爲什麼。它進入該分支,但它在該行上失敗,其餘的不執行。 – 2010-11-23 10:07:06