Quoting
-
If you can work out the javascript that copies the selected text and pastes it into the edit window then you're a better man than I! (spent many hours trying to do exactly this - am I missing something simple?) cheers, Chris Maunder (CodeProject)
If you can work out the javascript that copies the selected text and pastes it into the edit window then you're a better man than I! You should not set yourself up like that because... Tada! Get selected text example The trick is not so simple. Basically you have to create a textRange object and then pull the value from there. Here is an example (very simple and quick):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript">
function getSel()
{
if (document.getSelection) txt = document.getSelection();
else if (document.selection) txt = document.selection.createRange().text;
else return;
if (txt !== ""){
txtReply.value = "<HR><I>" + txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," ") + "</I><HR>";
}
else
{
alert('You must please select some text to quote');
}
}
</script>
</head><body>
<DIV id="divOriginalPost">This is the original post, select some text and then click the quote button</DIV>
<TEXTAREA id="txtReply" COLS="40" ROWS="10"></TEXTAREA>
<INPUT type="Button" onclick="getSel()" id="cmdQuote" value="Quote"></body>
</html>It can be made to work in Netscape. We had to do this for an intranet project and it was a pain to figure out. Luckily that link I posted above helped a lot :) I still don't feel a better man than you though. :laugh: regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
-
If you can work out the javascript that copies the selected text and pastes it into the edit window then you're a better man than I! (spent many hours trying to do exactly this - am I missing something simple?) cheers, Chris Maunder (CodeProject)
Here's code that will append the current selection to the end of the textarea's contents. I couldn't figure out how to insert it at the current caret position (or even how to get the caret position). Button1 = your Paste button, Text1 = the text box.
function Button1_onclick() {
var seltext = document.selection.createRange().text;
if ( seltext != "" )
Text1.value += seltext;
}--Mike-- http://home.inreach.com/mdunn/ #include "witty_sig.h" :love: your :bob: with :vegemite: and :beer:
-
Here's code that will append the current selection to the end of the textarea's contents. I couldn't figure out how to insert it at the current caret position (or even how to get the caret position). Button1 = your Paste button, Text1 = the text box.
function Button1_onclick() {
var seltext = document.selection.createRange().text;
if ( seltext != "" )
Text1.value += seltext;
}--Mike-- http://home.inreach.com/mdunn/ #include "witty_sig.h" :love: your :bob: with :vegemite: and :beer:
I couldn't figure out how to insert it at the current caret position (or even how to get the caret position). I noticed that when inserting emoticons on CP it also just puts it at the end of the text, not where the cursor is. However, seeing as focus is passed to the Quote button would there be a cursor (caret) position to get? I guess onblur of the textbox you could record the last caret position and use that. Then when you click the Quote button it uses the caret variable as the position... hmmm might work. brb, trying it out :-D regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
-
I couldn't figure out how to insert it at the current caret position (or even how to get the caret position). I noticed that when inserting emoticons on CP it also just puts it at the end of the text, not where the cursor is. However, seeing as focus is passed to the Quote button would there be a cursor (caret) position to get? I guess onblur of the textbox you could record the last caret position and use that. Then when you click the Quote button it uses the caret variable as the position... hmmm might work. brb, trying it out :-D regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
Paul Watson wrote: I guess onblur of the textbox you could record the last caret position and use that. Then when you click the Quote button it uses the caret variable as the position... hmmm might work. brb, trying it out Any luck? cheers, Chris Maunder (CodeProject)
-
If you can work out the javascript that copies the selected text and pastes it into the edit window then you're a better man than I! You should not set yourself up like that because... Tada! Get selected text example The trick is not so simple. Basically you have to create a textRange object and then pull the value from there. Here is an example (very simple and quick):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript">
function getSel()
{
if (document.getSelection) txt = document.getSelection();
else if (document.selection) txt = document.selection.createRange().text;
else return;
if (txt !== ""){
txtReply.value = "<HR><I>" + txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," ") + "</I><HR>";
}
else
{
alert('You must please select some text to quote');
}
}
</script>
</head><body>
<DIV id="divOriginalPost">This is the original post, select some text and then click the quote button</DIV>
<TEXTAREA id="txtReply" COLS="40" ROWS="10"></TEXTAREA>
<INPUT type="Button" onclick="getSel()" id="cmdQuote" value="Quote"></body>
</html>It can be made to work in Netscape. We had to do this for an intranet project and it was a pain to figure out. Luckily that link I posted above helped a lot :) I still don't feel a better man than you though. :laugh: regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
Thanks Paul, thanks Mike! The quote button is in. cheers, Chris Maunder (CodeProject)
-
Thanks Paul, thanks Mike! The quote button is in. cheers, Chris Maunder (CodeProject)
*highlight text* *click quote* Chris Maunder wrote: Thanks Paul, thanks Mike! The quote button is in. Ooooohhhhh :) Now all we need is a "Generate rational, intelligent and rallying counter arguement" button... :-D regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
-
Paul Watson wrote: I guess onblur of the textbox you could record the last caret position and use that. Then when you click the Quote button it uses the caret variable as the position... hmmm might work. brb, trying it out Any luck? cheers, Chris Maunder (CodeProject)
Chris Maunder wrote: Any luck? Here it is Chris. Once again not all my work, got it from FAQTs - Knowledge Base. I took your new Quote code and put in the other code. Once again it uses the TextRange object and then the CharAt method. You may have to do a few more tests than I did on recording the caret position from the TEXTAREA as I have only covered OnClick and OnKeyPress. (Avoid the OnBlur, something odd happens) You could also use the functions for inserting the Emoticons! That would be nice :-D
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<script language='JavaScript'>
<!--
function QuoteText(author)
{
var txt = "";
if (document.getSelection) txt = document.getSelection();
else if (document.selection) txt = document.selection.createRange().text;
else return;var emph = false; emph = true var TextArea = txtReply; if (txt !== "") { var text = ""; //var text = TextArea.value; var length = text.length; if (length > 0 && text.charAt(length-1) != "\\n") text += "\\n\\n"; text += (author + " wrote:\\n"); if (emph) text += "<i>"; text += txt; if (emph) text += "</i>"; text += "\\n\\n"; insertAtCaret(TextArea, text); TextArea.focus(); } else alert('You did not select any text to quote');
}
function storeCaret (textEl)
{
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}function insertAtCaret (textEl, text)
{
if (textEl.createTextRange && textEl.caretPos)
{
var caretPos = textEl.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else textEl.value = text;
}
//-->
</script><body>
<DIV id="divOriginal" style="padding: 5px; width: 400px; border: 1px solid #cccccc">
Colin Davies wrote:
Yeah the quote button is a cool idea<BR><BR>Thank Paul Watson and Mike Dunn for the kick in the bum to get this feature added.<BR><BR> cheers,<BR> Chris Maunder (CodeProject) </DIV> <BR><INPUT type="Button" name="cmdQuote" value="Quote that!" onclick="QuoteText('Bob');"><BR><BR> <TEXTAREA name="txtReply" id="txtReply" rows="20" cols="47" style="width: 400px;" onclick="storeCaret(this);"
-
Chris Maunder wrote: Any luck? Here it is Chris. Once again not all my work, got it from FAQTs - Knowledge Base. I took your new Quote code and put in the other code. Once again it uses the TextRange object and then the CharAt method. You may have to do a few more tests than I did on recording the caret position from the TEXTAREA as I have only covered OnClick and OnKeyPress. (Avoid the OnBlur, something odd happens) You could also use the functions for inserting the Emoticons! That would be nice :-D
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<script language='JavaScript'>
<!--
function QuoteText(author)
{
var txt = "";
if (document.getSelection) txt = document.getSelection();
else if (document.selection) txt = document.selection.createRange().text;
else return;var emph = false; emph = true var TextArea = txtReply; if (txt !== "") { var text = ""; //var text = TextArea.value; var length = text.length; if (length > 0 && text.charAt(length-1) != "\\n") text += "\\n\\n"; text += (author + " wrote:\\n"); if (emph) text += "<i>"; text += txt; if (emph) text += "</i>"; text += "\\n\\n"; insertAtCaret(TextArea, text); TextArea.focus(); } else alert('You did not select any text to quote');
}
function storeCaret (textEl)
{
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}function insertAtCaret (textEl, text)
{
if (textEl.createTextRange && textEl.caretPos)
{
var caretPos = textEl.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
}
else textEl.value = text;
}
//-->
</script><body>
<DIV id="divOriginal" style="padding: 5px; width: 400px; border: 1px solid #cccccc">
Colin Davies wrote:
Yeah the quote button is a cool idea<BR><BR>Thank Paul Watson and Mike Dunn for the kick in the bum to get this feature added.<BR><BR> cheers,<BR> Chris Maunder (CodeProject) </DIV> <BR><INPUT type="Button" name="cmdQuote" value="Quote that!" onclick="QuoteText('Bob');"><BR><BR> <TEXTAREA name="txtReply" id="txtReply" rows="20" cols="47" style="width: 400px;" onclick="storeCaret(this);"
Thanks Paul! I had a go at this but it didn't seem to be consistently saving the carrot position. I'll have a second attempt later. cheers, Chris Maunder (CodeProject)
-
Thanks Paul! I had a go at this but it didn't seem to be consistently saving the carrot position. I'll have a second attempt later. cheers, Chris Maunder (CodeProject)
Hmmm, in what instances doesn't it record the caret position? I will have a look at it and fiddle. (lame joke alert!) I may call Bugs Bunny, he is good with carrots... X| Chris Maunder wrote: cheers, Chris Maunder (CodeProject) Damn I like clicking that button... :-D regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
-
Hmmm, in what instances doesn't it record the caret position? I will have a look at it and fiddle. (lame joke alert!) I may call Bugs Bunny, he is good with carrots... X| Chris Maunder wrote: cheers, Chris Maunder (CodeProject) Damn I like clicking that button... :-D regards, Paul Watson Bluegrass Cape Town, South Africa Do you Sonork? I do! 100.9903 Stormfront "The greatest thing you will ever learn is to love, and be loved in return" - Moulin Rouge
I only had a brief time to play and it seemed semi-random. I'll have to sit down and really thrash it out. cheers, Chris Maunder (CodeProject)