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

时间:2013-05-21 12:50:37

标签: javascript jquery

我正在使用此plguin来获得textarea的插入位置。我有一个<div>,点击它会显示带有笑脸列表的<ul>,将其中一个放入textarea。点击<div>即可在textarea上触发blur事件。我将插入位置保留为模糊:

oRoot.blur(function() {
    caret_pos = $(this).caret();
});

用户点击smilie后,我把它放在插入符号的textarea中,然后失去焦点:

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事件处理程序。

任何解决方法的想法?我正考虑在clickkeyupfocus上为IE保存插入位置。

2 个答案:

答案 0 :(得分:1)

我已经尝试了我想到的解决方法(在点击,关键,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涉及选择文本的和平,移动光标等。

答案 1 :(得分:0)

Here是另一种获取IE中插入位置的方法。如果你愿意,你可以使用它。

希望它有所帮助。