如何在jqueryui datepicker

时间:2016-03-04 19:36:44

标签: javascript jquery jquery-ui

我正在使用jQueryUI日期选择器,当用户点击文本框并按Enter键时,将填充当前日期。我想避免这种情况。我试过这个:

$('#datepicker').on('keypress',  function(e){
    if (e.which == 13) {
        e.preventDefault();
        e.stopPropagation();
        return false; 
    }
});

没有运气

这是demo https://jsfiddle.net/shalini456/zwjzo175/

的链接

6 个答案:

答案 0 :(得分:3)

试试这个:

$("#datepicker").keydown(myfunction); // use keydown

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

        return false;
    }
}

答案 1 :(得分:2)

这里的一些解决方案似乎起作用,因为它们会抛出某种异常。

有两件事似乎可以让它发挥作用而不会抛出异常。

如“Charly H”所述,keydown绑定必须在调用datepicker之前发生。

然后在keydown处理程序中调用e.stopImmediatePropagation()。 E.g。

  $('#datepicker').bind('keydown',function(e){

    if (e.which == 13)
        e.stopImmediatePropagation();
  })
  .datepicker();

小提琴:https://jsfiddle.net/8fyvh8wd/18/

答案 2 :(得分:0)

试试这个:

$('#datepicker').keypress(function(e){

    if (e.keyCode == 10 || e.keyCode == 13) //10 is Line Feed and 13 is Carriage Return
        e.preventDefault();

  });

答案 3 :(得分:0)

如果您无法停用回车键,则可以解决此问题...您可以从"#datepicker"移除焦点,检查以下更新的小提琴https://jsfiddle.net/shalini456/zwjzo175/4/

<强>的jQuery

$(document).ready(function(){
    $( "#datepicker" ).datepicker();

  $("#datepicker").on('click', function(){
   $("#datepicker").blur();
  });


});

答案 4 :(得分:0)

我缩短了Bhupesh Kushwaha的解决方案,他在评论中提供了

$(function() {
    $("input").bind('keydown', function (e) {
    if (event.which == 13) {
    $(this).trigger(e); 
    return false; 
  } 
    }).datepicker(); 
  });

这对我有用:https://jsfiddle.net/zwjzo175/27/

答案 5 :(得分:0)

人,

我知道这可能为时已晚,但唯一对我有用的解决方案是来自“Charly H”的解决方案,在声明datepicker之前,他将代码绑定到输入文本。

我猜的原因是气泡传播及其优先级。

代码如下所示:

$(function() {
    $("input").bind('keydown', function (e) {
        if (event.which == 13) {
            e.preventDefault();
            e.stopPropagation();
            $(this).trigger(e); 
            return false;
        } 
    }).datepicker(); 
});