如何在jqueryui datepicker中禁用enter键

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

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

没有运气

这是演示https://jsfiddle.net/shalini456/zwjzo175/的链接

试试这个:

 $("#datepicker").keydown(myfunction); // use keydown function myfunction(e) { if(e.keyCode === 13) { e.stopPropagation(); e.preventDefault(); return false; } } 

这里的一些解决方案似乎有效,因为它们会抛出某种exception。

有两件事似乎可以让它工作而不会抛出exception。

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

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

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

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

试试这个 :

 $('#datepicker').keypress(function(e){ if (e.keyCode == 10 || e.keyCode == 13) //10 is Line Feed and 13 is Carriage Return e.preventDefault(); }); 

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

jQuery的

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

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

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

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

伙计们,

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

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

代码如下所示:

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