如何在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(); });