读书人

JAVAScript中有一个textarea中例如输

发布时间: 2013-07-04 11:45:32 作者: rapoo

JAVAScript中,有一个textarea中比如输入AAA;BBB;CCC;DDD;当鼠标移动到这个字符上时;
比如鼠标现在在AAA;在AAA;上时,鼠标指针本来是那种像大写 I 这种的要输入的指针,但是现在要判断这个字符串是否有分号结尾,如有的话,那么鼠标点击到这个字符串时,变为那个全选的图标,应该是默认。求解。 JavaScript 鼠标 指针
[解决办法]

引用:
15L bug好多。而且都写在了点击事件了。鼠标点击才会变。只支持火狐,我是IE8





<textarea rows="6" id="txtBox" cols="60" onclick ="ShowFos()">
AAAAAAAAAAAAAA;BBBBBBBBBBBBBBBBBBBBBBBBBBBB;CCCCCCCCCCCCCCCCCCCCCCCCCCC;DDDDDDDDDDDDDDDDDDDDDDDDDD;
</textarea>
<script type="text/javascript">
function ShowFos() {

var obj = document.getElementById("txtBox");
var val = document.getElementById("txtBox").value;
var t1 = val.substr(0, getCursorPosition(obj).start);
var t2 = val.substr(getCursorPosition(obj).start, val.length);
var start = t1.length - (t1.length - t1.lastIndexOf(";"));
end = t1.length + t2.indexOf(";");
if (end > 0) {
obj.style.cursor = "pointer";
if (obj.setSelectionRange) {
obj.setSelectionRange(start,end);
} else {
var range = obj.createTextRange();


range.collapse(true);
range.moveStart('character', start);
range.moveEnd('character', end-start);
range.select();
}
}
else {
obj.style.cursor = "inherit";

}
}

function getCursorPosition(textarea) {
var rangeData = { text: "", start: 0, end: 0 };
textarea.focus();
if (textarea.setSelectionRange) { // W3C
rangeData.start = textarea.selectionStart;
rangeData.end = textarea.selectionEnd;
rangeData.text = (rangeData.start != rangeData.end) ? textarea.value.substring(rangeData.start, rangeData.end) : "";
} else if (document.selection) { // IE
var i,
oS = document.selection.createRange(),
// Don't: oR = textarea.createTextRange()
oR = document.body.createTextRange();
oR.moveToElementText(textarea);

rangeData.text = oS.text;


rangeData.bookmark = oS.getBookmark();

// object.moveStart(sUnit [, iCount])
// Return Value: Integer that returns the number of units moved.
for (i = 0; oR.compareEndPoints('StartToStart', oS) < 0 && oS.moveStart("character", -1) !== 0; i++) {
// Why? You can alert(textarea.value.length)
if (textarea.value.charAt(i) == '\n') {
i++;
}
}
rangeData.start = i;
rangeData.end = rangeData.text.length + rangeData.start;
}

return rangeData;
}
</script>


[解决办法]

咱们的回答都只能实现在焦点在textarea内(鼠标点击、keyup等等,总之就是要焦点)的选中。

而楼主要的 说白了 ,楼主要的效果就是QQ邮箱里面发送邮件填写多个收件人的那种效果,

也就是我18楼回答的, 那相当于一个所见即所得的编辑器

读书人网 >JavaScript

热点推荐