7

JQuery UI datepicker 似乎存在一个错误,当用户手动输入日期并按回车键时,日期选择器关闭但焦点停留在该字段上,因此日历不会再次打开,直到文本框失去焦点并再次获得它。如何抑制输入键行为?或者对于这个看似已知的错误还有其他已知的解决方案吗?谢谢!

编辑

在对此进行了更多工作之后,这是我提出的解决方案:

$('#someid').bind('keydown', function(event) {

    if (event.which == 13) {var e=jQuery.Event("keydown");
                    e.which = 9;//tab 
                    e.keyCode = 9;
                    $(this).trigger(e);
                    return false;
                }
            });

tab 键效果很好,可以防止 datepicker 的 enter 键事件的默认行为,例如在某些情况下选择今天的日期。

4

5 回答 5

6

我最初在应用您的解决方案时遇到了问题。我认为值得发布我的更大片段,以提供更多上下文。

if (!Modernizr.inputtypes.date) {
    //use modernizer to weed out browsers that already have a timepicker 
    //http://stackoverflow.com/questions/11297827/html5-date-input-type-interfering-with-jquery-datepicker

    $("input[data-val-date]")
                    .bind('keydown', function (event) {  // BEGIN APPLYING NinaNa's S.O. ANSWER
                    if (event.which == 13) {
                        var e = jQuery.Event("keydown");
                        e.which = 9;//tab 
                        e.keyCode = 9;
                        $(this).trigger(e);
                        return false;
                    }
    }).datepicker({ dateFormat: 'mm/dd/yy' }); //THEN APPLY JQUERY UI FUNCTIONALITY


}
于 2014-02-25T15:01:55.800 回答
3

试试这个

$(document).keydown(keyDownHandler); // use appropriate selector for the keydown handler

function keyDownHandler(e) {
    if(e.keyCode === 13) {
        e.stopPropagation();
        e.preventDefault();

        return false;
    }
}

e.stopPropagation我认为可以防止冒泡,e.preventDefault防止默认行为并返回 false 。

您应该看看什么最有效keyUpkeyDownkeyPress

于 2013-02-11T08:37:58.077 回答
2

通过在 datepicker 的 onClose 方法中添加一个 blur() 事件来解决。

于 2013-02-11T08:39:47.297 回答
1

最简单的方法是像通常那样实例化日期选择器<input>,然后我们自己摆脱焦点处理程序并用点击处理程序替换它。

于 2016-01-18T10:50:13.637 回答
0

使用e.stopImmediatePropagation(),并确保在调用之前发生 keydown 绑定datepicker()

  $('input').on('keydown', function(e) {
      if (e.which == 13)
          e.stopImmediatePropagation();
  }).datepicker();

信用

于 2018-04-30T15:49:11.000 回答