我有这个代码将焦点放在元素(文本框)上。这在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();
}
答案 0 :(得分:1)
如果您打算在输入框中选择文字,我认为您的意思是elem.selectionStart = 0
而不是elem.selectionStart = elemLen;
演示http://jsfiddle.net/ygalanter/fmP64/1/
但是焦点在你的代码中工作原样并且原始代码将光标放在文本的末尾
答案 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();
}
请求帮助:)