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键事件的默认行为,例如在某些情况下选择今天的日期.
我最初在应用您的解决方案时遇到问 我认为值得发布我的更大的代码片段,提供更多的上下文.
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)
尝试这个
$(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 也是如此。
您应该看看什么最有效:keyUp、keyDown或keyPress。
| 归档时间: |
|
| 查看次数: |
10221 次 |
| 最近记录: |