Android 端末の Mobile Safari 上で select ボックスの選択が反映されない問題がありました。内部的には選択されたことになっているのですが、ブラウザの描画が行われていない状態でした。
style 属性の display プロパティを (block|none) の切替でエレメントを表示/非表示するような javascript を組んでいたのですが、あらかじめ HTML ソース上で display:none で非表示にしているブロックを display:block に変更して select ボックスを表示させた場合、この現象が発生することが分かりました。
以下のコードでは、display:block に切替後に select ボックスが表示されても選択変更が描画されません。
<script>
window.onload = function() {
document.getElementById('selectBlock').style.display = 'block';
}
</script>
...
<div id="selectBlock" style="display:none">
<select name="rgb">
<option value=""></option>
<option value="#ff0000">Red</option>
<option value="#00ff00">Green</option>
<option value="#0000ff">Blue</option>
</select>
</div>
この症状は、初回の display:block 切替時のみで、その後に none > block と再表示した場合は発生しません。
色々と試してみた結果、.style.display 値の変更ではなく、setAttribute メゾッドで style 属性を変更すると解決しました。
window.onload = function() {
document.getElementById('selectBlock').setAttribute(
'style', 'display:block'
);
}
同じ Apple WebKit でも iOS の Mobile Safari では発生せず、Android 実機と AVD Manager によるシュミレータの両方で同じ症状が発生しましたので Android OS 上のバグか仕様のようです。