Javascript 当我在android设备上选择next时,在填写表单时,它会跳过任何下拉列表

Javascript 当我在android设备上选择next时,在填写表单时,它会跳过任何下拉列表,javascript,html,css,samsung-mobile,setfocus,Javascript,Html,Css,Samsung Mobile,Setfocus,我有一个由输入文本框、下拉列表和提交按钮组成的web表单 当我在android手机上使用我的网站-chrome浏览器(或android设备上的任何浏览器)时,我使用手机键盘上的next导航到下一个字段 我的表单上的字段顺序: 名字(文本输入) 姓氏(文本输入) 日(下拉列表) 月份(下拉列表) 年份(下拉列表) 地址(文本)邮政编码(文本) 提交(按钮) android键盘上的“下一步”按钮可以很好地从名字导航到姓氏。但是,当我输入完姓氏后选择“下一步”时,它会直接将我带到地址字段。它会跳过

我有一个由输入文本框、下拉列表和提交按钮组成的web表单

当我在android手机上使用我的网站-chrome浏览器(或android设备上的任何浏览器)时,我使用手机键盘上的next导航到下一个字段

我的表单上的字段顺序:

  • 名字(文本输入)
  • 姓氏(文本输入)
  • 日(下拉列表)
  • 月份(下拉列表)
  • 年份(下拉列表)
  • 地址(文本)邮政编码(文本)
  • 提交(按钮)
android键盘上的“下一步”按钮可以很好地从名字导航到姓氏。但是,当我输入完姓氏后选择“下一步”时,它会直接将我带到地址字段。它会跳过下拉字段

tabbing在桌面和苹果设备上都能正常工作,这只是android设备的一个问题

我是否应该专门为android浏览器做一些处理呢?

试着这样做

将具有可聚焦属性的微调器设置为true

yourEditText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_NEXT) { //trigger when user taps on next button in keyboard
            hideKeyboard(); //hides the keyboard as it is not necessary here
            yourEditText.clearFocus();
            yourSpinner.requestFocus();
            yourSpinner.performClick();//opens the dropdown in your spinner
        }
        return true;
    }
});
//当微调器聚焦时隐藏键盘

private void hideKeyboard() {
    InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),
            InputMethodManager.HIDE_NOT_ALWAYS);
}

不要将键盘上的“下一步”按钮混淆为TAB键,它不是。键盘上的“下一步”按钮只会查找可由键盘编辑的下一个输入字段,例如文本或数字字段。它将跳过所有其他内容,因为这需要关闭键盘并调出本机日历或组合框选择器

如果键盘中存在TAB键,则其工作原理与预期相同。play store中的某些键盘具有TAB键,如。您可以下载并查看按TAB键是否会聚焦下一个选择元素或日期输入元素

下面的演示显示了TAB键和Next按钮的区别。您可以看到,在使用TAB键导航时,键盘事件会触发,显示TAB键代码9。但在使用Next键时,不会触发键盘事件,就好像浏览器甚至不知道刚才发生了什么一样

document.getElementById('my_form').addEventListener('keydown',函数(事件){
document.getElementById('response_view')。innerHTML=event.keyCode;
})

最后一个按键代码:
选择日期
1.
2.
3.
考虑使用

tabindex全局属性指示其元素是否可以聚焦,以及它是否/在何处参与顺序键盘导航(通常使用Tab键,因此得名)

下面是一个例子,我选择了一个奇怪的顺序来关注input和div:

div:focus{font-weight:bold;}

单击此输入,然后单击选项卡
焦点2(你也可以聚焦文本)
焦点4
焦点3
无焦点

FOCUS 5
编辑:这种技术在Android上运行良好,但会导致select元素在Firefox.Pooh中不再起作用。

只需将
contenteditable
属性添加到您的select元素中。它将使键盘将select识别为焦点的可行元素

next
ing进入选择时,它将接收焦点,键盘将从屏幕上移除。选择元素将展开,要求用户触摸它进行展开并进行选择。此外,在进行选择后,用户将需要触摸表单中的下一个字段因为键盘未激活,无法提供其
next
按钮

我的观点是,这是表单展示的最合理的行为。也就是说,这个问题应该在链的更高层解决(由浏览器和/或键盘软件供应商)

这是在Android 6.0.1上使用GBoard和TouchPal键盘进行测试的。下面的CSS只是为了让表单看起来更漂亮一点。要做到这一点,唯一需要的是
select
元素上的
contenteditable
属性。字段还必须包含在
标记中(
next
ing在没有表单标记的情况下似乎不起作用)

.form字段{
填充:10px;
}
.表单字段标签{
显示:块;
}
.表单字段输入,
.表格字段选择{
显示:块;
宽度:100%;
保证金:0;
填充:0;
}

名称
年龄
情绪
请选择
高兴的
悲哀的
高兴的
疯狂的
拉德

我可以用javascript实现吗?我说的是在安卓设备上使用网站,而不是安卓应用程序。我对Ionic framework也有同样的问题。这可能吗?在安卓系统中,你可以这样做吗?你找到解决方案了吗?我最近发现了这个“bug”这似乎在我尝试的每个网站上都很普遍,但你的帖子是我搜索这个问题时唯一出现的帖子。我不敢相信其他人没有遇到过这一点。@Chris,你是在寻找Java或JavaScript解决方案吗?你会在WebView或web浏览器中使用它吗?如果JS适合jQuery?JavaScript.jQuery很好,我可以去掉好的部分。tabindex属性不起作用。选择元素仍然被跳过。我怀疑这与虚拟键盘输入没有处理选择元素有关,但似乎这样明显的问题早就解决了。这很有意义。Tab vs.Next and all。workaround非常酷,但对于这样一个简单的问题来说,它似乎非常复杂。/sadface是的,是的。如果有更好的方法,我会发布。这在功能上解决了问题,但会产生一个新的用户体验问题。在“下一步”之后输入时,用户被迫将注意力集中在随后的select元素上。在Android Chrome上,这会产生一个没有上下文的模式选项列表。对于OP的用例,听起来用户将完成输入他们的姓氏,然后显示一个1-30的列表。不太好。@AaronCicali可能就是安卓决定跳过t中的组合框的原因他先