web-dev-qa-db-ja.com

iOSの選択onchangeが起動しない

誰かがこれの回避策を知っていますか?ナビゲーションにselect要素を使用しようとしています。これは次のようになります。

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

すべてのデスクトップブラウザで動作し、WP7電話でも動作します。私のiPhone(iOS 5.0)では動作しません。

18
George Kendros

iOSは、入力の値を変更したときにchangeイベントを発生させない傾向があります。私は これをDevice-Bugsトラッカーでより詳細に文書化しています

回避策は、代わりにblurイベントにバインドすることです。上記の例では、onblurを使用すると、すべて設定されます。

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

onchangeonblurに変更すると、iOSでは機能しますが、他のiOSでは機能しません。私が最終的に得た修正は、onbluronchangeの両方を使用することでした。冗長に見えますが、望ましい効果があります。

1
Danny

フォームアクションを、ページをリダイレクトするphpページに設定することになりました。送信ボタンも必要ありません(ただし、グレースフルデグラデーションのためにボタンを追加してからjsで非表示にすることもできます)。iOSリストピッカーウィジェットは、[完了]ボタンが押されたときにフォームアクションを自動的にトリガーします。

Js onChangeアプローチの方がクリーンだと感じたので、もともとフォームアクションと送信ボタンを避けたかったのですが、送信ボタンを必要としないため、iOSでphpを使用しても問題ありません。

0
George Kendros