检测元素何时即将获得焦点

时间:2013-03-21 20:05:30

标签: javascript jquery asp.net focus radeditor

我有一个带有Telerik RadEditor(富文本框)的ASP.NET页面。当在页面中进行制表时,当用户进入文本框时,焦点会在进入textarea之前设置为各种工具栏图标。我在一个页面上添加了一些jQuery,以便在从表格的最后一个单元格中跳出时将焦点设置在文本区域上:

$('input[type=text][id*=tbCost]').keydown(function (e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 9) {    //If TAB key was pressed
        e.preventDefault();
        var editor = $('body').find("<%=RadEditor1.ClientID%>");    //get a reference to RadEditor client object
        editor.setFocus();    //set the focus on the the editor
    }
});

我正在寻找一种在控件中实现此功能的方法,以便无论页面处于何种状态,它都能正常工作。例如,在上面的代码中,仅当用户正在跳出tbCost单元格时才设置焦点。我希望能够在用户选中工具栏项时将焦点设置到文本区域。

有没有办法检测元素何时即将焦点?我知道我可以看到元素是否具有焦点,但我想不出实现此功能的方法。

由于

解决方案:

如果将来有任何人有同样的问题,并想要一个例子,这里是我使用的代码:

 $(document).ready(function () {
    $('.reToolCell').focusin(function () {
        var editor = $('body').find("<%=RadEditor1.ClientID%>");
        editor.setFocus();
    });
});

2 个答案:

答案 0 :(得分:2)

您可以考虑将焦点绑定到工具栏图标上,并将焦点重定向到文本区域。虽然如果用户尝试使用Tab键聚焦这些工具以便使用它们,这可能会产生意想不到的副作用。

答案 1 :(得分:0)

    //on focus eventHandler for all your icons that calls a function


  #('.elementtype, class or a generic way of identifying the icons'.onfocus(myFunction(this))

//该函数获取元素的参数,移动到下一个兄弟元素并设置焦点

     myFunction = (element) {
       element.next().focus();
     }