2014-05-23 126 views
0

我有這段代碼將重點放在一個元素(文本框)上。在IE和Firefox正常工作,但在鉻,不工作:/焦點在IE和Firefox上工作,但在Chrome中失敗

我使用JS沒有jQuery的(強制性的項目)和VB.NET

建議? :)

THX

 var elem = document.getElementById("<%=txtPesquisa.ClientID%>"); 
     var elemLen = elem.value.length; 
     // For IE Only 
     if (document.selection) { 
      // Set focus 
      elem.focus(); 
      // Use IE Ranges 
      var oSel = document.selection.createRange(); 
      // Reset position to 0 & then set at end 
      oSel.moveStart('character', -elemLen); 
      oSel.moveStart('character', elemLen); 
      oSel.moveEnd('character', 0); 
      oSel.select(); 
     } 
     else if (elem.selectionStart || elem.selectionStart == '0') { 
      // Firefox/Chrome 
      elem.selectionStart = elemLen; 
      elem.selectionEnd = elemLen; 
      elem.focus(); 
     } 
+2

你確定它的' focus()'而不是在Chrome中失敗的選擇內容 – adeneo

回答

1

如果你的意思是在輸入框中選擇文本,我認爲你的意思是elem.selectionStart = 0而不是elem.selectionStart = elemLen;

演示http://jsfiddle.net/ygalanter/fmP64/1/

但重點在你的工作代碼原樣,原始代碼將光標置於文本末尾

0

已解決。

問題不在於此功能,而是在代碼中的其他地方。

但是,我做的代碼略有變化是完美的,並把自動對焦在單詞的末尾:

 var elem = document.getElementById("<%=txtPesquisa.ClientID%>"); 
     var elemLen = elem.value.length; 
     // For IE Only 
     if (document.selection) { 
      // Set focus 
      elem.focus(); 
      // Use IE Ranges 
      var oSel = document.selection.createRange(); 
      // Reset position to 0 & then set at end 
      oSel.moveStart('character', elemLen); 
      oSel.moveStart('character', elemLen); 
      oSel.moveEnd('character', elemLen); 
     } 
     else if (elem.selectionStart || elem.selectionStart == '0') { 
      // Firefox/Chrome 
      elem.selectionStart = elemLen; 
      elem.selectionEnd = elemLen; 
      elem.focus(); 
     } 

Thx的幫助:)

相關問題