在JQuery ui datepicker中禁用enter键

Nin*_*aNa 7 jquery jquery-ui uidatepicker keyboard-events

JQuery UI datepicker似乎有一个错误,当用户手动输入日期并点击输入时,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;
                }
            });
Run Code Online (Sandbox Code Playgroud)

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

bkw*_*ign 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


}
Run Code Online (Sandbox Code Playgroud)


Tim*_* S. 3

尝试这个

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

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

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

e.stopPropagation我认为,防止冒泡、e.preventDefault防止默认行为并返回 false 也是如此。

您应该看看什么最有效:keyUpkeyDownkeyPress