可以获得当前文本框里光标位置的方法...大家讨论讨论!

linhaibo linhaibo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
很多论坛都有插入表情代码的功能,但是都不能在当前位置插入,
刚刚看到国外的一个论坛可以实现这功能,并搜索了相关的资料,
<script>
function insertsmilie(smilieface) {
if (document.PostTopic.Message.createTextRange && document.PostTopic.Message.caretPos) {
var caretPos = document.PostTopic.Message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? smilieface + ' ' : smilieface;
document.PostTopic.Message.focus();
} else {
document.PostTopic.Message.value+=smilieface;
document.PostTopic.Message.focus();
}
}
// -->
</script>



比较令人疑惑的是 caretPos 属性,搜索了一下 MSDN ,只得到一篇文章,其中是代码是这样的...


<HTML>
<HEAD>
<SCRIPT LANGUAGE="JScript">
function saveCaret(elem)
{
if ( elem.isTextEdit )
elem.caretPos = document.selection.createRange();
}
function getCaretPos(elem)
{
if ( elem.isTextEdit && elem.caretPos )
{
var bookmark = "~";
var orig = elem.value;
var caretPos = elem.caretPos;
caretPos.text = bookmark;
var i = elem.value.search( bookmark );
window.status = "Caret is at character " + i;
elem.value = orig;
}
}
</SCRIPT>
</HEAD>

<BODY>
<INPUT NAME="txtInput" ONSELECT="saveCaret(this)"
ONCLICK="saveCaret(this)" ONKEYUP="saveCaret(this)" VALUE="Where are you?">
<INPUT TYPE="button" VALUE="caret pos" ONCLICK="getCaretPos(txtInput)">
</BODY>
</HTML>


大家想想看这个是什么原理呢?
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
linhaibo
JavaScript 87,983 成员 224,681 内容