焦点适用于IE和Firefox,但在Chrome中失败

时间:2014-05-23 16:32:58

标签: javascript

我有这个代码将焦点放在元素(文本框)上。这在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 个答案:

答案 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();
        }

请求帮助:)