使用 Jquery mobile 时,当您使用键盘从 select 中选择一个选项时,您无法跳到 DOM 中的下一个输入。如果您取出 jquery 移动位,事情会按预期工作。
我有以下html:
<body>
<input type='text' id='starter' /><br />
<select id='sel'>
<option value=''></option>
<option value='1'>One</option>
<option value='2'>Two</option>
</select><br />
<input type='text' id='ender' /><br />
</body>
我已经在 fiddler 上使用 jquery 和 jquery mobile 进行了以下设置:
http://jsfiddle.net/58jkj1wa/ - 原始 jquery 按预期工作。
http://jsfiddle.net/a5reojmo/4/ - jquery mobile 损坏的选择。
要重现该问题,请执行以下操作:
- 光标从第一个输入开始
- 按“标签”移动到选择
- 按向下箭头激活选项
- 按向下箭头选择第一个选项
- 按回车接受更改(非移动设备 - 现在焦点正确位于选择上)
- 按标签
在非移动版本中,光标现在按预期位于第二个输入中。在移动版本中,它在其他地方......我不知道在哪里。您有很多选项卡可以让焦点再次移动到第一个输入...然后在您刚刚使用的选择之后通过输入到您想要的字段。
就我个人而言,我认为这是一个错误,所以我觉得准备做的最干扰的事情是尝试使用 on change 触发器来尝试将焦点重新设置回选择,如下所示:
$("#sel").on("change", function (e) {
$("#sel").focus();
});
但这不起作用。如果您在其他任何地方进行焦点调用,它会按预期工作,如果您不更改值,则会正确突出显示并关闭。但是,一旦您更改值,焦点就会转移到其他地方。
但是,我可以将焦点设置到下一个项目:
$("#sel").on("change", function (e) {
$("#ender").focus();
});
但我宁愿不这样做,因为这意味着我不能对正在做的输入进行一些动态隐藏,并且必须以编程方式反映表单中的流处理。
我已经尝试更新 JQM 添加的一些包装器内容,并且尝试将焦点设置在另一个输入上,然后再返回,然后可选地执行选择菜单刷新,但移动设备仍然无法切换到下一个输入。我也尝试了各种 blur() 和 focus() 调用都无济于事。
我确实看到这个答案通过添加一个 keydown 处理程序做了类似的事情,但是由于我不知道值更改后焦点在哪里,所以我不知道在哪里添加 keydown 处理程序......此外这听起来像一个 JQuery Mobile错误不是吗?
您知道在 JQuery Mobile 中进行选择更改后如何使选项卡和焦点突出显示正常工作吗?
这是我应该报告的错误吗?