このプラグインを使用して、テキストエリアのキャレット位置を取得しています。を<div>
クリックすると<ul>
、スマイリー付きリストが表示され、そのうちの1つがテキストエリアに配置されます。をクリックすると、テキストエリア<div>
でイベントが発生します。blur
ぼかしのキャレット位置を保存します。
oRoot.blur(function() {
caret_pos = $(this).caret();
});
ユーザーがスマイリーをクリックした後、フォーカスを失う前にキャレットがあったテキストエリアに配置しました。
oList
.delegate('.chat-smile', 'click', function() {
var oRoot = $(this).parent().data('oRoot');
if (is_default_value(oRoot)) oRoot.val('');
oRoot.val(oRoot.caret(caret_pos).caret().replace($(this).attr('smilie-code')));
toggle_list($(this).parent());
});
問題は、IE では textarea にフォーカスがない場合にプラグインが機能しないように見え、IE ではblur
フォーカスが失われた後にイベント ハンドラーが起動されることです。
これを回避するアイデアはありますか?キャレット位置をclick
、keyup
、focus
IE 用に保存することを考えていました。