我有一个带有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();
});
});
答案 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();
}