iOS选择框的onchange事件未触发

22

有人知道如何解决这个问题吗?我想使用一个 select 元素来进行导航。它看起来像这样;

<select onchange="window.location=(this.options[this.selectedIndex].value)">

它适用于所有的桌面浏览器,也适用于我的WP7手机。但它不能在我的iPhone(iOS 5.0)上使用。

4个回答

35

iOS往往在更改其输入值时不会触发change事件。我已经在Device-Bugs跟踪器上对此进行了更深入的记录

解决方法是绑定到blur事件而不是change事件。在上面的示例中,使用onblur即可解决问题。

<select onblur="window.location=(this.options[this.selectedIndex].value)">

他们会在用户“点击”选项后立即触发事件,这就是问题所在...因此,并不是“完成”事件会触发更改。因此,在这种情况下,模糊效果是首选。这种分裂真是太烂了... - Miguel

7
如果将 onchange 更改为 onblur,它可以在 iOS 上工作,但在其他平台上无法正常工作。最终我采用的解决方法是同时使用 onbluronchange。这看起来有些冗余,但却可以达到预期的效果。

1

我最终将表单操作设置为重定向页面的php页面。您甚至不需要提交按钮(尽管可以添加一个以实现优雅降级,然后使用js隐藏它),iOS列表选择器小部件在按下“完成”按钮时自动触发表单操作。

我最初想避免表单操作和提交按钮,因为我认为js onChange方法更清晰,但是在iOS上使用php是可以接受的,因为它不需要提交按钮。


0

你的回答可以通过提供更多支持信息来改进。请[编辑]以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接