[英]Caret position in textarea in IE using jQuery caret plugin
我正在使用這只企鵝來獲取文本區域的插入符位置。 我有一個<div>
,單擊它會顯示帶有表情符號列表的<ul>
,將其中之一放入文本區域。 單擊<div>
會在textarea上觸發blur
事件。 我將插入符號的位置保存為模糊:
oRoot.blur(function() {
caret_pos = $(this).caret();
});
在用戶單擊smilie之后,我將其放置在插入符號失去焦點之前的文本區域中:
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
事件處理程序。
有什么解決方法的想法嗎? 我正在考慮將插入符號的位置保存在IE的click
, keyup
, focus
上。
我已經嘗試過我想到的解決方法(保存IE的點擊,鍵入,焦點時的插入符號位置)。 現在綁定事件以保存插入符號位置的函數如下所示:
function bind_save_caret_pos() {
var event_to_bind = $.browser.msie ? 'keyup mouseup' : 'blur';
oRoot.bind(event_to_bind, function() {
caret_pos = $(this).caret();
});
}
keyup
涉及鍵入,刪除,帶箭頭的文本移動等。
mouseup
用於選擇文本的和平度,移動光標等。
這是獲得IE中插入符號位置的另一種方法。 您可以根據需要使用它。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.