【发布时间】:2016-02-10 07:40:27
【问题描述】:
某些应用程序必须具有“下一个 gui-control on Enter press”功能。我们使用下面的代码来注册全局处理程序,但它不适用于 Bootstrap 3 Datepicker。有没有人建议我们可以“覆盖”默认行为的某种方式?
这里是为按键事件注册全局处理程序的核心:
jQuery.extend(jQuery.expr[':'], {
focusable: function (el, index, selector) {
return $(el).is('a, button, :input, [tabindex]');
}
});
$(document).on('keypress', 'input,select,textarea', function (e) {
if (e.which == 13) {
e.preventDefault();
// Get all focusable elements on the page
var $canfocus = $(':focusable');
var index = $canfocus.index(document.activeElement) + 1;
if ($canfocus.eq(index).attr('tabindex') == -1) index++;
if (index >= $canfocus.length) index = 0;
$canfocus.eq(index).focus();
}
});
我们使用这个 DP:https://eonasdan.github.io/bootstrap-datetimepicker/
jQuery JavaScript 库是 v2.1.4
引导 v3.3.5
Datapicker 页面上的代码是:
<form ...>
<div class="form-horizontal">
<div class="form-group">
<label class="col-md-2 control-label" for="Date">Datum</label>
<div class="col-md-10">
<div class="input-group date" id="datetimepicker1">
<input type="text" id="Date" name="Date" >
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
<script type="text/javascript">
$(function () {
$('#datetimepicker1').datetimepicker({ format: 'L' });
});
</script>
<span class="text-danger field-validation-valid"></span>
</div>
</div>
</div>
</form>
使用此代码,在数据选择器处于焦点的“Enter”上没有发生任何事情。
【问题讨论】:
-
在这里工作正常jsfiddle.net/RR4hw/1220
-
像你写的那样必须有 HTML 结构吗?这个问题可能出在 HTML 结构中吗?我们在数据选择器周围有不同的 HTML 结构?我将使用更多 HTML 更新问题 HTML。
-
我无法想象影响按键的html结构
-
为按键事件注册全局处理程序的代码在单独的文件中,我们在标题标签中加载它的脚本链接。在浏览器调试中,我们无法捕获 DataPicker 的事件。上面的代码在 jsfiddle.net 中运行良好。
-
我们刚刚从eonasdan.github.io/bootstrap-datetimepicker下载了整页并在文件末尾添加了java-script代码,我们无法检测到按键事件。我在 jsfiddle.net 中举例说明的是某些 java-script lib 的不同版本。
标签: twitter-bootstrap datepicker