テキストを編集しようとしてクリックすると、一瞬そのテキストが選択されますが、すぐに選択が解除されてしまいます。ただ例外もあって、タブキーでフォーカスが移ったときは、期待どおり選択され、解除されることはありません。う~む。
<form id="f">select メソッドは onfocus イベントが完了してから適用しないとダメのようです。ですので、次のように setTimeout 関数を使って、select メソッドの適用を遅らせてみたところ、期待どおり動作するようになりました。
<input id="c" type="text" name="c" value="160-0021" />
<input type="submit" />
</form>
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
$('#c')
.focus(function() {
$(this).select();
});
}); //jQuery
//]]>
</script>
理論上は onfocus イベントの中で select メソッドを適用していないので、そのタイミングによる副作用があること(ありそう)ですが、他のブラウザも含めて試行していますが、今のところ不都合は見つかっていません。
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
$('#c')
.focus(function() {
var self = this;
setTimeout(function() {
$(self).select();
}, 10); // Safari
});
}); //jQuery
//]]>
</script>
[すぐにできる!] iLife'08 村上 弘子 白瀧 由裕 井村 克也 by G-Tools |
2 件のコメント:
調べていないので間違えているけもしれませんが、クリックの場合はフォーカスイベントの後にクリックイベントが発生していて、後のクリックが選択をかき消してたりはしないでしょうか。
自信は無いですが…
なるほど。その可能性が高そうですね。ただ、この振る舞いはあくまでも Safari だけなんですよね。
コメントを投稿