在IE中使用jQuery插入符号插件在文本区域中插入符号的位置
Caret position in textarea in IE using jQuery caret plugin
我使用这个插件来获取文本区域的插入符号位置。我有一个<div>
,点击它会显示带有微笑列表的<ul>
,将其中一个放入文本区。点击<div>
触发文本区域的blur
事件。我将插入符号的位置保存为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中,似乎插件不工作,如果文本区没有焦点,并在IE的blur
事件处理程序是在焦点丢失后被触发。
有什么办法解决这个问题吗?我正在考虑保存click
, keyup
, focus
的插入符号位置为IE..
我已经尝试了我之前想到的解决方案(保存插入符号位置在点击,上键,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中获取插入符号位置的另一种方法。如果你愿意,你可以用它。
希望能有所帮助。
相关文章:
- 插入符号到底是什么
- 将插入符号位置移动到ContentEditable<DIV>
- 为更改的输入返回插入符号位置的逻辑
- 内容可编辑DIV单击/插入符号设置
- 在contentEditable元素中居中占位符插入符号
- 获取插入符号相对于行可见起点的位置
- JavaScript 插入符号位置
- 链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
- 如何更改文本区域中闪烁的光标/插入符号
- Caret函数没有'如果插入符号在最后一个位置,就不能正常工作
- TinyMCE微笑符号插件-更改插入的微笑符号的宽度
- 如何使用javascript获取&使用字符偏移量设置插入符号位置
- text使用shift键和箭头键时的区域插入符号位置
- Rangy和IE8-在段落末尾的元素后面放置插入符号
- HTML Texeare 插入符号控件使用左、右、下、上、主页和结束虚拟按钮
- 在插入符号位置获取DOM元素
- 单击时获取文本区域中插入符号的位置
- 正则表达式替换为插入符号
- 隐藏插入符号-插入点-输入栏-闪烁的垂直小栏
- 我如何检测一个表情符号插入事件从OS X字符查看器和iOS表情符号键盘在Javascript/Redactor