【问题标题】:Caret position in textarea in IE using jQuery caret plugin使用 jQuery 插入符号插件在 IE 中的 textarea 中插入符号位置
【发布时间】:2023-03-15 09:47:01
【问题描述】:

我正在使用这个plguin 来获取文本区域的插入符号位置。我有一个<div>,单击它会显示<ul>with 笑脸列表,将其中一个放入文本区域。单击 <div> 会在 textarea 上触发 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 事件处理程序在焦点丢失后被触发。

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

【问题讨论】:

标签: javascript jquery


【解决方案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 处理选择文本的和平、移动光标等。

【讨论】:

    【解决方案2】:

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

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复!但是 IE
    猜你喜欢
    • 2011-03-31
    • 2013-05-08
    • 2015-04-01
    • 2023-03-29
    • 1970-01-01
    • 2022-08-15
    • 2013-07-18
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多