focus适用于IE和Firefox,但在Chrome上行不通

focus works on IE and Firefox but fail in Chrome

本文关键字:但在 Chrome 行不通 Firefox 适用于 IE focus      更新时间:2023-09-26

我用这段代码将焦点放在一个元素(文本框)上。这在IE和Firefox中运行良好,但在chrome中不工作:/

我使用JS没有jQuery(强制性的项目)和VB。净

建议吗?:)

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

如果你想在输入框中选择文本,我想你是指elem.selectionStart = 0而不是elem.selectionStart = elemLen;

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

但是焦点在你的代码中是正常工作的原始代码将光标放在文本的末尾

已解决

问题不在这个函数中,而在代码的其他地方。

然而,我对代码做了一个小小的改变,使其完美,并将自动对焦放在单词的末尾:

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

谢谢你的帮助

相关文章: