[英]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的click
, keyup
, focus
上。
我已经尝试过我想到的解决方法(保存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.