0

使用 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 中进行选择更改后如何使选项卡和焦点突出显示正常工作吗?

这是我应该报告的错误吗?

4

0 回答 0