我正在使用此Javascript在我选择的文本中实现以下更改:
function formatText(el,tag){
var selectedText = document.selection?document.selection.createRange().text:el.value.substring(el.selectionStart,el.selectionEnd);// IE:Moz
if (selectedText == "")
{return false}
var newText='"#28'+tag+'"'+selectedText+'"#28'+tag+'"';
if(document.selection){ //IE
document.selection.createRange().text=newText;
}
else{ //Moz
el.value=el.value.substring(0,el.selectionStart)+newText+el.value.substring(el.selectionEnd,el.value.length);
}
}
但是,我希望新标签只能在另一个textarea中显示,而不是我实际选择的那个。在这种情况下,我有2个文本区域,一个称为“message_text”,另一个称为“消息”...我将输入并选择“message_text”中的文本,但对选择所做的任何更改必须仅反映在“消息”中文字区。
目前我试过这个:
<button type="button" value="D" onclick="formatText(message,'D')" class="blue">D</button>
但这只有在我在“消息”文本区域中选择了anytnin时才有效。
由于
答案 0 :(得分:1)
您必须扩展javascript代码:
function formatText(el_from, el_to, tag) {
var selectedText = document.selection ? document.selection.createRange().text : el_from.value.substring(el_from.selectionStart, el_from.selectionEnd);// IE:Moz
if (selectedText == "") {
return false;
}
var start_index = el_to.value.indexOf(selectedText);
var sel_t_len = selectedText.length;
var copy_selText = el_to.substring(start_index, sel_t_len);
var newText='"#28'+tag+'"'+copy_selText+'"#28'+tag+'"';
el_to.value = el_to.value.substring(0, start_index) + newText + el_to.value.substring(sel_t_len, el_to.value.length);
}
然后你可以这样称呼它:
<button type="button" value="D" onclick="formatText(document.getElementById('message_text'), document.getElementById('message'),'D')" class="blue">D</button>
PS:我不确定document.getElementById
- 自从使用jQuery以来多年没使用过它...你也应该转换为jQuery ...你不会为IE解决JS或者FF或Chrome等 - jQuery自己处理这个......
编辑:好的,我做了一点定制,它应该符合您的需求......