2013-12-11 70 views
2

我試圖在文本框中設置光標/插入符號的位置,使其位於輸入控件文本內容的末尾。有很多這樣做的例子。棘手的部分是如果文本超出了文本框的寬度,我希望文本'滾動'到視圖中,以便文本的末尾和插入符號可見。這正是被問這樣一個問題:IE 8:將插入符號移動到文本輸入字段的末尾並使結尾可見

move caret to the end of a text input field AND make the end visible

有上市的還有,它與Chrome瀏覽器後的工作以及可能(9或更高版本)的IE瀏覽器版本的解決方案,但與IE 8的解決方案沒有按」工作;沒有document.createEvent。我試圖修改代碼,以便我使用createEventObject & fireEvent:

window.setTimeout(function() {    
      e = document.createEventObject("KeyboardEvent"); 
         e.keyCode = 35; 
         //textfield.fireEvent('onkeypress', e); 
         textBox.fireEvent('onkeydown', e); 
         textBox.fireEvent('onkeyup', e); 

         textBox.blur(); 
         textBox.focus(); 
       }, 2000); 

,但這並沒有給的水平滾動文本眼簾年底預期的效果。有沒有辦法與IE 8做到這一點?

謝謝!

巴黎

編輯:最後,我用這個功能,這似乎是根據我的測試所有主要的瀏覽器。

scrollCaretIntoView: function(textField) { 

    if (textfield.selectionStart || textfield.selectionStart === 0) { 
     //For all browsers, except IE 8 and earlier 
     textfield.selectionStart = textfield.value.length; 
     textfield.selectionEnd = textfield.value.length; 
     textfield.blur(); // Webkit wake-up hack 
     textfield.focus(); 
    } else if (document.selection) { 
     //IE8 and earlier specific code 
     textfield.focus(); 
     var range = document.selection.createRange(); 
     range.moveEnd('character', 0); //move 0 characters from current position 
     range.select(); 
    } 
} 

回答

1

我想我已經找到了IE8的解決方案(我只在IE8中測試過)。見fiddle

下面是一個JS代碼:

var rng = text.createTextRange(); 
rng.moveEnd('textedit'); 
rng.moveStart('textedit'); 
rng.select(); 
rng.scrollIntoView(); 
+0

我認爲這可能會工作。我發現了另一個我最終使用的解決方案。見上面的評論。 – Notre

相關問題