2012-06-21 31 views
2

我在更新面板中有一個輸入(文本字段),它在每次文本更改後都會自動回覆。我可以關注相同的文本字段,但是我無法擺脫調用document.getElementById('myTextField')。focus()後出現的文本higlight。 該解決方案似乎是最準確的:Javascript焦點刪除文本突出顯示

if (window.getSelection) { 
    window.getSelection().removeAllRanges(); 
} else if (document.selection) { 
    document.selection.empty(); 
} 

但它有一個問題。輸入仍然是重點,但我不能寫文字。在寫之前我必須點擊它。

回答

1

你可以做,如果你重新聚焦後你的價值,即

HTML

<input id="myTextField" type="text" value="SomeValue" />​ 

JS

var myInput=document.getElementById('myTextField'); 
var myInput_value=myInput.value; 
myInput.focus(); 
myInput.value=myInput_value;​ 

Working Example.

+0

謝謝,它完美的工作! – JNM

1

我認爲理想的解決方案不會涉及取消設置和重置輸入的值。這可能會產生不必要的副作用。以下是在我看來移動脫字符號的正確方法:

var input = document.getElementById('inputElement'); 
input.focus(); 
if(input.setSelectionRange) { 
    input.setSelectionRange(input.value.length, input.value.length); 
} else { 
    var range = input.createTextRange(); 
    range.moveStart('character', input.value.length); 
    range.moveEnd('character', input.value.length); 
    range.select(); 
} 
+0

更新了更多跨瀏覽器的解決方案。 – Cecchi