iPhone + jqueryUI Dialog
jQueryUI dialogはお手軽にdialog boxを表示させることができるが、妙な欠点もいくつかある。
その一つが、iphoneのブラウザでdialogを開いた時の挙動。
開いたダイアログの中にinputやselectタグが存在すると、自動的にフォーカスが合う。
そして、iOSの仕様でクソ使いにくいoption一覧をご親切にも勝手に出してくれるというわけである。
具体的には、こんな感じのコードが問題となる。 ex: https://jsfiddle.net/uoccz7La/
<!-- HTML部分 --> <!-- iOSでこのダイアログを開くと意図した動作をしない --> <div id="dialog" title="badtips"> <p>select your favorite number.</p> <select id="selectitem"></select> </div>
/* javascript部分 */ $(function(){ $("#dialog").dialog({ width: 450, open: function(){ var add_html = ""; for(var i=1; i <= 10; i++){ add_html += "<option value=" + i + ">" + i + "</option>" } $("#selectitem").html(add_html); } }) })
これをiPhoneで開いてダイアログを開くと、以下の画像のような結果となる。
要はopen時に内容が足される前のselectを開いてしまっている。
これを回避するには、フォーカスがselectにあわないようにしてあげればよい。
すなわち、以下のような付け足しでOK。
<!-- HTML部分 --> <div id="dialog" title="bettertips"> <span class="ui-helper-hidden-accessible"><input type="image"/></span> <!-- dummy --> <p>select your favorite number.</p> <select id="selectitem"></select> </div>