如何将注意力集中在ace编辑器上?

时间:2011-08-13 14:13:07

标签: javascript jquery jquery-ui ace-editor

我在jquery选项卡界面中使用ajax.org中的ace编辑器组件。 每个选项卡都包含一个单独的ace编辑器。每当我切换到新选项卡时,其中的编辑器都无法获得焦点。

我可以通过绑定到jquery UI的“tabsshow”事件来检测何时选择了选项卡。如果我的编辑器div的id是editor-tab-0,那么有没有人知道如何将焦点设置到其中的编辑器中  对于第一个标签,依此类推......?

请帮助一下吗?

5 个答案:

答案 0 :(得分:35)

editor.focus(); //To focus the ace editor
var n = editor.getSession().getValue().split("\n").length; // To count total no. of lines
editor.gotoLine(n); //Go to end of document

答案 1 :(得分:12)

专注于结束:

editor.focus();
editor.navigateFileEnd();

感谢@ a-user

答案 2 :(得分:11)

很好的解决方案,但我想要到最后一行的末尾而不是最后一行的开头。

//To focus the ace editor
editor.focus();
session = editor.getSession();
//Get the number of lines
count = session.getLength();
//Go to end of the last line
editor.gotoLine(count, session.getLine(count-1).length);

答案 3 :(得分:3)

以下是我的代码的摘录,它将重点放在jQuery UI选项卡中的Ace编辑会话上:

    $('#tabs_div').tabs(
        {
            select : function(event, ui) {
                        var tabName = ui.panel.id;
                        var doc = docs.get(tabName);  // look up the EditSession
                        var session = env.split.setSession(doc);
                        session.name = tabName;
                        env.editor.focus();
            }

答案 4 :(得分:0)

我在Ace编辑器中使用JQuery,我发现以下代码对我来说非常好用。 PS:我的代码编辑器窗口在iframe中:

$('#modelFrame').mouseover(function() {
    try {
        $(this).get(0).contentWindow.editor.focus();
    } catch (doNothing) {
        ;;
    }
});