textarea 光标位置插入字符 我也在等这类的问题!我是用的IFrame期待中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <script>function insertAtCursor(myField, myValue) {if (document.selection) {myField.focus();sel = document.selection.createRange();sel.text = myValue;}else if (myField.selectionStart|| myField.selectionStart == "0") {var startPos = myField.selectionStart;var endPos = myField.selectionEnd;myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);} else {myField.value += myValue;}}// calling the function//insertAtCursor(document.formName.fieldName, 'this value');</script> <form><textarea id=demo>abcdef</textarea><input type=button onclick=insertAtCursor(document.getElementById('demo'),"1234") value=1 ID=Button1><input type=button onclick=insertAtCursor(document.getElementById('demo'),"1234") value=2 ID=Button2></form> <HTML><HEAD> <SCRIPT> var JCaret = function(){????var m_oBindObj????= null;????????// 绑定进行 监控插入符号 的元素????????var m_otmpRange = null;????var fnDoStore = function(){????????m_otmpRange = document.selection.createRange().duplicate();????????if(m_otmpRange.parentElement() != m_oBindObj){????????????m_otmpRange = null;????????}????}????var fnDoMove = function(rng, iStep){????????rng.collapse(false);????????if(typeof(iStep) == "number")????????????rng.move("character",iStep);????????// 万一移出界外,则聚焦前/末尾????????if(rng.parentElement() != m_oBindObj){????????????rng = m_oBindObj.createTextRange();????????????rng.collapse( iStep>0 ? false : true);????????}????????rng.select();????????m_otmpRange = document.selection.createRange().duplicate();????}????????// 在两端附加 sBStr 前字串, sEStr 后字串, iStep 向前移动 多少字????this.appendStr = function(sBStr, sEStr, iStep){????????if(m_oBindObj == null)????????????return JCaret.NOBIND;????????var rng = (m_otmpRange == null) ? m_oBindObj.createTextRange() : m_otmpRange;????????rng.text = sBStr + rng.text + sEStr;????????fnDoMove(rng, iStep);????????????????}????????// 在插入符处插入, sStr 插入的字串, iStep 向前移动 多少字????this.insertStr = function(sStr, iStep){????????if(m_oBindObj == null)????????????return JCaret.NOBIND;????????var rng = (m_otmpRange == null) ? m_oBindObj.createTextRange() : m_otmpRange;????????//********************** 修改为着这里,当采用右键菜单进行粘贴操作的时候,Document.Selection 里面的文本为粘贴的字串 ******//????????if(this.isSelected() == false && (rng.text.length > 0))????????????rng.text += sStr;????????else????????????rng.text = sStr;????????????????fnDoMove(rng, iStep);????}????????// 在插入符后接上 sStr , iStep 向前移动 多少字????this.concatStr = function(sStr, iStep){????????if(m_oBindObj == null)????????????return JCaret.NOBIND;????????var rng = (m_otmpRange == null) ? m_oBindObj.createTextRange() : m_otmpRange;????????rng.text += sStr;????????????????????fnDoMove(rng, iStep);????}????// 绑定元素????this.bind = function(oObj){????????if(typeof(oObj)=="object" && oObj.createTextRange){????????????m_oBindObj = oObj;????????????m_oBindObj.attachEvent('onclick', fnDoStore);????????????m_oBindObj.attachEvent('onkeyup', fnDoStore);????????????m_oBindObj.attachEvent('onselect', fnDoStore);????????}????????else{????????????return JCaret.NOTEXTOBJ;????????}????}????????// 取消绑定????this.unbind = function(){????????if(m_oBindObj != null){????????????m_oBindObj.detachEvent('onclick', fnDoStore);????????????m_oBindObj.detachEvent('onkeyup', fnDoStore);????????????m_oBindObj.detachEvent('onselect', fnDoStore);????????????m_oBindObj = null;????????}????}????// 查看是否选择着字串????this.isSelected = function(){????????if(m_oBindObj == null)????????????return JCaret.NOBIND;????????var rng = document.selection.createRange();????????if(rng.parentElement() == m_oBindObj && rng.text.length > 0)????????????return true;????????return false;????}}JCaret.NOBIND = new Error(0,"JCaret: 没有绑定 监控元素");JCaret.NOTEXTOBJ = new Error(0,"JCaret: 不是有效的可以进行 TextRange 操作的元素");</SCRIPT> </HEAD> <BODY> <TEXTAREA NAME="box" ROWS="5" COLS="80" WRAP="soft">123</TEXTAREA> <BR> <SCRIPT LANGUAGE="JavaScript"><!--var caret = new JCaret();????// 声明一个 插入符类caret.bind(box);????????????// 绑定到 box 元素中,监视他的 插入符行为//caret.unbind()function Ubb_B(){????if(caret.isSelected()){????// 是否选择字串????????// 在选择的字串两边添加 ,并且光标将停留在 [/B]后面,不发生偏移????????caret.appendStr("","");????}????else{????// 没有选择字串???????? // 在光标位置插入 ,并向前移动 [/B] 的字串长度位,则光标定位于 间????????caret.insertStr("","[/B]".length * -1);????}}//--></SCRIPT><INPUT TYPE="button" VALUE="粗体 B" ONCLICK="Ubb_B()"> </BODY> </HTML> 在asp中怎么用javascript代替vb? Ext的一个问题 关于下拉菜单搜索 一个简单的数据检查的问题,请教! 关于easy ui 表格加载的问题 怎么在页面中访问其包含的iframe中页面的javascript方法? 请问real player 插件的事件怎么使阿 怎样直接打开一个 .doc文挡?? <option>里支持onclick事件吗?回答后马上散分!!!! 关于nodejs在express框架下返回的response RadioButton显示的文本,用javascript怎样添加,要支持FireFox 100分,求通过JAVASCRIPT实现图片自动播放功能!
function insertAtCursor(myField, myValue) {
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
}
else if (myField.selectionStart|| myField.selectionStart == "0") {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
} else {
myField.value += myValue;
}
}
// calling the function
//insertAtCursor(document.formName.fieldName, 'this value');</script>
<form>
<textarea id=demo>abcdef</textarea>
<input type=button onclick=insertAtCursor(document.getElementById('demo'),"1234") value=1 ID=Button1>
<input type=button onclick=insertAtCursor(document.getElementById('demo'),"1234") value=2 ID=Button2>
</form>
<HTML>
<HEAD>
<SCRIPT>
var JCaret = function(){????var m_oBindObj????= null;????????// 绑定进行 监控插入符号 的元素????
????var m_otmpRange = null;????var fnDoStore = function(){
????????m_otmpRange = document.selection.createRange().duplicate();????????if(m_otmpRange.parentElement() != m_oBindObj){
????????????m_otmpRange = null;
????????}
????}????var fnDoMove = function(rng, iStep){
????????rng.collapse(false);????????if(typeof(iStep) == "number")
????????????rng.move("character",iStep);????????// 万一移出界外,则聚焦前/末尾
????????if(rng.parentElement() != m_oBindObj){
????????????rng = m_oBindObj.createTextRange();
????????????rng.collapse( iStep>0 ? false : true);
????????}
????????rng.select();
????????m_otmpRange = document.selection.createRange().duplicate();
????}
????
????// 在两端附加 sBStr 前字串, sEStr 后字串, iStep 向前移动 多少字
????this.appendStr = function(sBStr, sEStr, iStep){
????????if(m_oBindObj == null)
????????????return JCaret.NOBIND;????????var rng = (m_otmpRange == null) ? m_oBindObj.createTextRange() : m_otmpRange;
????????rng.text = sBStr + rng.text + sEStr;????????fnDoMove(rng, iStep);
????????????
????}
????
????// 在插入符处插入, sStr 插入的字串, iStep 向前移动 多少字
????this.insertStr = function(sStr, iStep){
????????if(m_oBindObj == null)
????????????return JCaret.NOBIND;????????var rng = (m_otmpRange == null) ? m_oBindObj.createTextRange() : m_otmpRange;
????????
//********************** 修改为着这里,当采用右键菜单进行粘贴操作的时候,Document.Selection 里面的文本为粘贴的字串 ******//
????????if(this.isSelected() == false && (rng.text.length > 0))
????????????rng.text += sStr;
????????else
????????????rng.text = sStr;
????????
????????fnDoMove(rng, iStep);????}
????
????// 在插入符后接上 sStr , iStep 向前移动 多少字
????this.concatStr = function(sStr, iStep){
????????if(m_oBindObj == null)
????????????return JCaret.NOBIND;????????var rng = (m_otmpRange == null) ? m_oBindObj.createTextRange() : m_otmpRange;????????rng.text += sStr;????????????????????fnDoMove(rng, iStep);
????}????// 绑定元素
????this.bind = function(oObj){
????????if(typeof(oObj)=="object" && oObj.createTextRange){
????????????m_oBindObj = oObj;????????????m_oBindObj.attachEvent('onclick', fnDoStore);
????????????m_oBindObj.attachEvent('onkeyup', fnDoStore);
????????????m_oBindObj.attachEvent('onselect', fnDoStore);
????????}
????????else{
????????????return JCaret.NOTEXTOBJ;
????????}????}
????
????// 取消绑定
????this.unbind = function(){
????????if(m_oBindObj != null){
????????????m_oBindObj.detachEvent('onclick', fnDoStore);
????????????m_oBindObj.detachEvent('onkeyup', fnDoStore);
????????????m_oBindObj.detachEvent('onselect', fnDoStore);
????????????m_oBindObj = null;
????????}
????}????// 查看是否选择着字串
????this.isSelected = function(){
????????if(m_oBindObj == null)
????????????return JCaret.NOBIND;
????????var rng = document.selection.createRange();????????if(rng.parentElement() == m_oBindObj && rng.text.length > 0)
????????????return true;
????????return false;
????}
}JCaret.NOBIND = new Error(0,"JCaret: 没有绑定 监控元素");
JCaret.NOTEXTOBJ = new Error(0,"JCaret: 不是有效的可以进行 TextRange 操作的元素");</SCRIPT>
</HEAD>
<BODY> <TEXTAREA NAME="box" ROWS="5" COLS="80" WRAP="soft">
1
2
3</TEXTAREA>
<BR>
<SCRIPT LANGUAGE="JavaScript">
<!--
var caret = new JCaret();????// 声明一个 插入符类caret.bind(box);????????????// 绑定到 box 元素中,监视他的 插入符行为
//caret.unbind()function Ubb_B(){
????if(caret.isSelected()){????// 是否选择字串????????// 在选择的字串两边添加 ,并且光标将停留在 [/B]后面,不发生偏移
????????caret.appendStr("","");
????}
????else{????// 没有选择字串???????? // 在光标位置插入 ,并向前移动 [/B] 的字串长度位,则光标定位于 间
????????caret.insertStr("","[/B]".length * -1);
????}
}//-->
</SCRIPT><INPUT TYPE="button" VALUE="粗体 B" ONCLICK="Ubb_B()"> </BODY>
</HTML>