2014-05-23 22 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的帮助:)

相关问题