键盘导航
您可以通过按键或按键组合来访问 Scheduler 及其元素。本教程将为您提供有关 Scheduler 键盘导航的全部必要信息,包含焦点行为、就绪快捷键的使用以及自定义快捷键的创建等要点。
启用功能
要在 Scheduler 中使用键盘导航,需要在页面上启用 key_nav 扩展。
scheduler.plugins({
key_nav: true
});
键盘导航过程中的焦点行为
Focus on Scheduler
当按下 Tab 键时,Scheduler 的焦点与其他普通元素获得焦点的方式相同。 之后要在 Scheduler 中进行导航,可以使用箭头键及其他按键。
当再次按下 Tab 键时,焦点离开 Scheduler,移动到页面的其他位置。
Focus on a modal window
当一个模态窗口(如灯箱、确认窗口)打开时,焦点从 Scheduler 移到该窗口,导航在其中就像在简单表单中一样进行。窗口关闭后,焦点返回到 Scheduler。
要将焦点返回到 Scheduler,需要使用 focus 方法。
scheduler.focus();
当 Scheduler 再次获得焦点时,它会将焦点放在内部的活动元素上,或者放在第一行,或放在最近被选中的元素上。
模态窗口中的默认导航操作如下:
- Enter - 确认并关闭
- Escape - 关闭且不进行任何更改
如果焦点设在表单中的某个按钮上,按下 Space 或 Enter 将调用聚焦中的按钮,而不是执行该操作。
对获得焦点的单元格进行样式化
当您将焦点设置在单元格上时,它会以灰色/黄色高亮显示。如果需要更改此样式,请使用 .dhx_focus_slot CSS 类:
<style>
.dhx_focus_slot{
background-color: #fff;
}
</style>
作用域 (Scopes)
在按键点击时调用的动作取决于上下文。这意味着可以将不同的动作附加到不同的元素(scopes)。 Scheduler 中有以下上下文元素(scopes):
- "scheduler" - 整个 Scheduler
- "timeSlot" - 一个时间槽
- "event" - 一个事件
- "minicalDate" - 迷你日历中的日期
- "minicalButton" - 迷你日历中的箭头按钮
如果同一个快捷键绑定到了多个作用域,更具体的快捷键将被触发。这意味着如果同一个快捷键同时绑定到 Scheduler 和其某个元素上,绑定到元素上的快捷键将先于绑定到整个 Scheduler 的快捷键被调用。
添加快捷键
要创建一个新的键盘快捷键,需要使用 addShortcut 方法并向其传递三个参数:
- shortcut - (string) 一个新的快捷键或按键组合名称
- handler - (function) 在快捷键被触发时调用的处理函数
- scope - (string) 要将处理函数绑定到的上下文元素名称
scheduler.addShortcut("shift+w", function(e){
const target = e.target;
if(target.closest("[event_id]"))
const eventId = target.getAttribute("event_id");
if(eventId)
scheduler.showQuickInfo(eventId);
},"event");
移除快捷键
要从某个作用域中移除快捷键,需要使用 removeShortcut 方法。该方法接受两个参数:
- shortcut - (string) 快捷键名称或按键组合
- scope - (string) 要附加该快捷键的上下文元素名称
scheduler.removeShortcut("shift+w","event");
获取快捷键处理程序
您可以使用 getShortcutHandler 方法获取快捷键的处理程序。该方法接受两个参数:
- shortcut - (string) 快捷键名称或按键组合
- scope - (string) 要附加该快捷键的上下文元素 名称
const shortcut_handler = scheduler.getShortcutHandler("shift+w","event");
该方法返回一个函数,表示快捷键调用时的处理程序。
快捷键语法
键盘快捷键可以由以下按键或按键组合组成:
- 修饰键 + 字符键("ctrl+a");
- 修饰键 + 非字符键("ctrl+space");
- 字符键("a");
- 非字符键("space")
一个操作可以有多组按键组合。在这种情况下,所有组合将以逗号分隔列出: "ctrl+a, ctrl+space"。