添加标签到选择 [英] Adding tags to selection
问题描述
函数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 。长度);
}
}
但是,我希望新标签只能看到在另一个textarea而不是我实际做选择的地方。在这种情况下,我有2个文本区域,一个称为message_text,另一个称为消息...我将输入并选择message_text中的文本,但对选择所做的任何更改只能反映在消息文本区域。
目前我已经试过这个:
< ; button type =buttonvalue =Donclick =formatText(message,'D')class =blue> D< / button>
但是,这只有在我选择了消息文本区域中的anytnin时才有效。
谢谢
您必须扩展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 ==){
返回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 =buttonvalue =Donclick =formatText(document.getElementById('message_text'),document.getElementById('message' ),'D')class =blue> D< / button>
PS:我不确定 document.getElementById
- 自从使用jQuery以来,多年没有使用它...你也应该转换成jQuery ...你不会为IE或FF或Chrome等解决JS问题 - jQuery自己处理这个问题。 。
编辑:好的,我做了一个小小的定制,它应该适合您的需求......
I am using this Javascript to effect the following changes in my selected text:
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);
}
}
However, i want the new tags to only be visible in another textarea not the one where I actually do the selecting. In this case I have 2 Text areas, one is called "message_text" the other is called "message" ... I iwll input and select text in "message_text" but any changes made to the selection must only reflect in the "message" text area.
At present I have tried this:
<button type="button" value="D" onclick="formatText(message,'D')" class="blue">D</button>
But this only works if I have selected anytnin in the "message" text area.
Thanks
You have to extend the javascript code:
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);
}
Then You can call it like this:
<button type="button" value="D" onclick="formatText(document.getElementById('message_text'), document.getElementById('message'),'D')" class="blue">D</button>
PS: I'm not sure about document.getElementById
- haven't used it for years since using jQuery... You should convert to jQuery, too... You would not noeed to solve JS for IE or FF or Chrome, etc - jQuery handles this by itself...
EDIT : OK, I did a little customization and it should fit to Your needs...
这篇关于添加标签到选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!