2

我正在使用这个插件来获取 textarea 的插入符号位置。我有一个<div>,单击它会显示<ul>带有笑脸的列表,以将其中一个放入 textarea。单击会在 textarea 上<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 ..

4

2 回答 2

1

我已经尝试过我之前想到的解决方法(将插入符号的位置保存在点击、keyup、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处理选择文本的和平,移动光标等。

于 2013-05-22T15:36:19.323 回答
0

是在 IE 中获取插入符号位置的另一种方法。如果你喜欢,你可以使用它。

希望能帮助到你。

于 2013-05-21T14:35:03.947 回答