- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 select2 时遇到表单上的 Taborder 问题。
我有一个输入表单,我希望用户能够按顺序浏览它。
我能够对文本输入字段进行排序,但不能对 select2 下拉列表进行排序。
问题似乎出在他们的默认 tabindex="-1"上,如下所示;
> <div id="s2id_ctl00_MainContent_ddlAreaKept" class="select2-container
> form-control">
> <a class="select2-choice" tabindex="-1" onclick="return false;" href="javascript:void(0)">
> <input id="s2id_autogen4" class="select2-focusser select2-offscreen" type="text" tabindex="0">
> <div class="select2-drop select2-display-none select2-with-searchbox">
> </div>
> <select id="ctl00_MainContent_ddlAreaKept" class="form-control select2-offscreen" name="ctl00$MainContent$ddlAreaKept" tabindex="-1">
我还编写了以下 JavaScript 来将 tabIndex 值添加到字段,但它没有按我想要的方式工作。
var tabOrder = 0;
document.getElementById("ctl00_MainContent_ddlAreaKept").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_ddlNCDYears").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_txtVehicleValue").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_txtAge").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_txtForename").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_txtSurname").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_txtEmail").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_txtPhoneNumber").tabIndex = tabOrder++;
document.getElementById("ctl00_MainContent_btnGetQuote").tabIndex = tabOrder++;
下拉列表不会进入,它会跳过它们并按应有的方式浏览文本框。
非常感谢任何帮助!
已解决:我尝试过:
var tabOrder = 1;
这已经解决了这个问题。我不知道为什么或如何:|
最佳答案
github上有一个解决方案,你可以创建一个js文件,然后将其包含在select2的调用下,在这个新文件中你必须粘贴以下内容:
jQuery(document).ready(function($) {
var docBody = $(document.body);
var shiftPressed = false;
var clickedOutside = false;
//var keyPressed = 0;
docBody.on('keydown', function(e) {
var keyCaptured = (e.keyCode ? e.keyCode : e.which);
//shiftPressed = keyCaptured == 16 ? true : false;
if (keyCaptured == 16) { shiftPressed = true; }
});
docBody.on('keyup', function(e) {
var keyCaptured = (e.keyCode ? e.keyCode : e.which);
//shiftPressed = keyCaptured == 16 ? true : false;
if (keyCaptured == 16) { shiftPressed = false; }
});
docBody.on('mousedown', function(e){
// remove other focused references
clickedOutside = false;
// record focus
if ($(e.target).is('[class*="select2"]')!=true) {
clickedOutside = true;
}
});
docBody.on('select2:opening', function(e) {
// this element has focus, remove other flags
clickedOutside = false;
// flag this Select2 as open
$(e.target).attr('data-s2open', 1);
});
docBody.on('select2:closing', function(e) {
// remove flag as Select2 is now closed
$(e.target).removeAttr('data-s2open');
});
docBody.on('select2:close', function(e) {
var elSelect = $(e.target);
elSelect.removeAttr('data-s2open');
var currentForm = elSelect.closest('form');
var othersOpen = currentForm.has('[data-s2open]').length;
if (othersOpen == 0 && clickedOutside==false) {
/* Find all inputs on the current form that would normally not be focus`able:
* - includes hidden <select> elements whose parents are visible (Select2)
* - EXCLUDES hidden <input>, hidden <button>, and hidden <textarea> elements
* - EXCLUDES disabled inputs
* - EXCLUDES read-only inputs
*/
var inputs = currentForm.find(':input:enabled:not([readonly], input:hidden, button:hidden, textarea:hidden)')
.not(function () { // do not include inputs with hidden parents
return $(this).parent().is(':hidden');
});
var elFocus = null;
$.each(inputs, function (index) {
var elInput = $(this);
if (elInput.attr('id') == elSelect.attr('id')) {
if ( shiftPressed) { // Shift+Tab
elFocus = inputs.eq(index - 1);
} else {
elFocus = inputs.eq(index + 1);
}
return false;
}
});
if (elFocus !== null) {
// automatically move focus to the next field on the form
var isSelect2 = elFocus.siblings('.select2').length > 0;
if (isSelect2) {
elFocus.select2('open');
} else {
elFocus.focus();
}
}
}
});
docBody.on('focus', '.select2', function(e) {
var elSelect = $(this).siblings('select');
if (elSelect.is('[disabled]')==false && elSelect.is('[data-s2open]')==false
&& $(this).has('.select2-selection--single').length>0) {
elSelect.attr('data-s2open', 1);
elSelect.select2('open');
}
});
});
这对我有用,如果您想了解更多信息:https://github.com/peledies/select2-tab-fix
© 2017 GitHub, Inc.条款隐私安全地位帮助联系GitHub应用程序编程接口(interface)训练店铺博客关于
关于javascript - select2 的 tabindex 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23652930/
如果每个元素都有自己的tabindex,如下所示: Link Option A Option B Option C Hello world Button 现在,我向 bu
例如,这是一个脚本: 所以,当用户按下 tab 并浏览六个文本框,到达最后一个然后按下 tab 时,它会转到第一个评论上方的内容,对吗?那么,如何让它再次从 tabindex="1"
$(document).on("keyup", function(e) { var code = e.which; var currentTabIndex = document.act
当提交按钮获得焦点时按 Tab 键,焦点应返回到 tabindex="1"。这是 HTML: 这是 JQuery: $("input").keydown(function (e) {
我们正在运行一个名为 Axe 的工具检查 HTML 页面的有效性和 508 合规性/可访问性。 此错误作为违规出现: Elements should not have tabindex greater
我有几个 LinearLayouts 包含在它们各自的 ScrollView 中,而 ScrollView 又包含在 ViewFlipper 中。奇怪的是,在某些布局中,一旦获得焦点,它就会自动从顶部
我有一个简单的窗口,其中嵌入了一个简单的复合控件。 (主窗口) First Second (复合控制) Third F
我刚刚把 two textbox(tabindex=0,2), one autocompletebox(tabindex=1) and one button(tabindex=3) 但在运行时自动完
WPF中的TabIndex和KeyboardNavigation.TabIndex有什么区别?什么时候使用每个? 最佳答案 @akjoshi在他的回答中包含了有关TabIndex的非常重要的信息,
我在一个文本框旁边有 2 个按钮,在这 2 个按钮后面还有另一个文本框。第一个文本框的 tabindex 为 1000,第一个按钮为 1001,第二个按钮为 1002。第二个文本框的 tabindex
如何在表单字段上设置 html 属性“tabindex”? 我的模板目前看起来像.. Email Address {{ form.email }} 最佳答案 选项卡索引是布局的一项功能
我有一个奇怪的行为:我有一个包含文本框和(简单)用户控件(文本框和按钮)的 MainWindow,但出于调试目的,我将其剥离为仅一个文本框。 当我使用文本框和用户控件而不设置 TabIndex 属性时
在我的 gwt 应用程序中,在某些屏幕上,我创建了一个带有输入表单的对话框。我希望能够使用 tabindex 属性,但只能在该对话框中使用。 (即:仅将该对话框的第一个字段循环到最后一个字段)现在,如
我正在使用 jQuery 自定义我自己的保管箱,但想知道如何将 tabindex 应用于它。 我尝试使用隐藏的选择焦点/模糊事件,但似乎不起作用。 我还尝试将 tabindex 属性应用于我的自定义保
我有一个带有字段的表单,其中一些字段可以隐藏。为了获得正确的可访问性,我使用 jQuery 添加 tabindex,仅添加到当前可见的元素: $(':input:visible').each(func
我有一个使用 jQuery UI 的对话框,上面有两个按钮。 对话框内部有一些表单元素,我可以使用 TAB 键进行切换。现在无法使用 TAB 键访问"is"按钮。接缝处没有 TabIndex。 我怎样
我在我的应用程序中使用 Angular JS。我在某些可点击元素上使用 tabindex 来支持应用程序的键盘用户。 我对 tabindex 的理解是,假设元素 A 的 tabindex = 1,元素
如果用户跳转到特定的选项卡索引,是否可以添加类?我想在用户选项卡到达特定索引时添加类,并在跳转到另一个索引时删除类?谢谢! 这里我想在选项卡聚焦于 tabindex=3 时添加事件类: Hello
如何为数字文本框设置标签索引..我的代码是.. $("#max_award_amount").kendoNumericTextBox({ min:0, max: 99999999.99
鉴于 浏览器有一个页面加载了带有 tabindex=1 的现有字段(称为 ef), 通过书签插入两个新字段(nf1 和 nf2) 第一次(不正确的行为)当鼠标单击 nf1 并随后单击一个选项卡时焦点的
我是一名优秀的程序员,十分优秀!