簡體   English   中英

使用jQuery caret插件在IE中textarea中的插入符位置

[英]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的clickkeyupfocus上。

我已經嘗試過我想到的解決方法(保存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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM