我正在使用此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
事件处理程序。
任何解决方法的想法?我正考虑在click
,keyup
,focus
上为IE保存插入位置。
答案 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中插入位置的方法。如果你愿意,你可以使用它。
希望它有所帮助。