jQuery UI Datepicker - 键盘导航事件?

时间:2016-02-20 13:41:57

标签: jquery jquery-ui jquery-ui-datepicker

为了使屏幕阅读器可以访问jQuery UI Datepicker,我需要使用正在突出显示的当前日期填充隐藏的div。

问题是没有与键盘导航相关的事件(CTRL +箭头键)。

在这种情况下,我如何检测用户何时在不同日期之间导航,以便我可以获取突出显示的日期并将其填充到隐藏的div中?

// how to detect CTRL + Arrow Key Event??
$("#datepicker").on("<CTRL + Arrow Key event>", function(){
   var message = ""+$(".ui-state-hover").html()+
                 " "+$(".ui-datepicker-month").html()+
                 " "+$(".ui-datepicker-year").html();
   $('#liveRegion').html(message);
});

1 个答案:

答案 0 :(得分:2)

您可以使用keydown事件检查 Ctrl 键是否与箭头键一起被按下。您可以查询按键的keyCode以确定是否按下了箭头键。箭头键keyCode的范围为37到40(含)。 37 =左,38 =上,39 =右,40 =下。

evt.ctrlKey如果已被按下则返回true,反之亦然。 evt.keyCode >= 37 && evt.keyCode <= 40确保仅在按下箭头键时才会更新#liveRegion div

$('#datepicker').keydown(function(evt) {
  if (evt.ctrlKey && evt.keyCode >= 37 && evt.keyCode <= 40) {
    var message = "" + $(".ui-state-hover").html() +
      " " + $(".ui-datepicker-month").html() +
      " " + $(".ui-datepicker-year").html();
    $('#liveRegion').html(message);
  }
});

请参阅下面的演示以获取一个工作示例。如果解决方案不适合您的需求,请随时告诉我。

<强> Fiddle Demo