誰かがこれの回避策を知っていますか?ナビゲーションにselect要素を使用しようとしています。これは次のようになります。
<select onchange="window.location=(this.options[this.selectedIndex].value)">
すべてのデスクトップブラウザで動作し、WP7電話でも動作します。私のiPhone(iOS 5.0)では動作しません。
iOSは、入力の値を変更したときにchange
イベントを発生させない傾向があります。私は これをDevice-Bugsトラッカーでより詳細に文書化しています 。
回避策は、代わりにblur
イベントにバインドすることです。上記の例では、onblur
を使用すると、すべて設定されます。
<select onblur="window.location=(this.options[this.selectedIndex].value)">
onchange
をonblur
に変更すると、iOSでは機能しますが、他のiOSでは機能しません。私が最終的に得た修正は、onblur
とonchange
の両方を使用することでした。冗長に見えますが、望ましい効果があります。
フォームアクションを、ページをリダイレクトするphpページに設定することになりました。送信ボタンも必要ありません(ただし、グレースフルデグラデーションのためにボタンを追加してからjsで非表示にすることもできます)。iOSリストピッカーウィジェットは、[完了]ボタンが押されたときにフォームアクションを自動的にトリガーします。
Js onChangeアプローチの方がクリーンだと感じたので、もともとフォームアクションと送信ボタンを避けたかったのですが、送信ボタンを必要としないため、iOSでphpを使用しても問題ありません。