Hej,
Jag har ett java-relaterat problem som jag inte riktigt löser ut själv. Läget är följande. Jag har sedan tidigare ett formulär. Vid sidan om det formuläret har jag smilysar som går att infoga i formuläret med hjälp av javascript. Nu vill jag lägga till s.k. BB-kod så att användarna också kan göra text fetstil, kursiv etc. Integrationen mellan smileyfunktionen och BB-koden får jag inte riktigt till då det förefaller att de använder samma funktion. Jag bifogar först den befintliga kod jag har (HTML + Javascript) och sedan den jag vill kombinera den med.
HTML:
<!--<tr style="background-color: #fff;">
<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;"> </td>
<td colspan="3" width="85%">
[red][B]<input type="button" value="Fet" onclick="makeBB(\'b\', \'d\', this)" /><input type="button" value="Understruken" onclick="makeBB(\'u\', \'d\', this)" /><input type="button" value="Kursiv" onclick="makeBB(\'i\', \'d\',
this)" /><input type="button" value="URL" onclick="lnk(\'url\', \'d\', this)" /><input type="button" value="Email" onclick="lnk(\'email\', \'d\', this)" />[/B][/red]
</td>
</tr>-->
<tr style="background-color: #fff;">
<td width="15%" style="padding-left: 5px; font-weight: bold;"> </td>
<td colspan="3" width="85%"> </td>
</tr>
<tr style="background-color: #fff;">
<td width="15%" style="padding-left: 5px; font-weight: bold; vertical-align: top;">Meddelande:</td>
<td width="45%"><textarea cols="50" rows="10" name="forummessage"><?php if($_POST['forummessage'] <> '') { echo stripslashes(htmlentities($_POST['forummessage'])); } ?></textarea>
<input type="hidden" value="<?php if($_POST['forumID'] <> '') { echo $_POST['forumID']; } else { echo $_GET['forumID']; } ?>" name="forumID">
</td>
<td colspan="2" width="32%" style="padding-right: 9px; vertical-align: top; font-size: 10px; font-weight: bold;">
<div style="padding: 0 6px 6px 6px; margin: 0 5px 0 5px; border: 0px groove #000;"><b>Infoga smiley</b><br /><br />
<?php
while($smiley = mysql_fetch_array($RSobj_get_smilies)) { ?>
[B]<a href="#" onclick="smilie('<?php echo $smiley['code']; ?>'); return false;"><?php echo "<img src=\"".$smiley['path'].$smiley['filename']."\" alt=\"".$smiley['description']."\"
title=\"".$smiley['description']."\" />"; ?></a>[/B]
<?php }
?>
</div></td>
Javascript
[B][blue]var cPos,
fObj,
ieC = Boolean(document.selection && document.selection.createRange);
[/blue][/B]
function smilie(str) {
if (ieC) {
if (typeof cPos != "undefined")
cPos.text = str;
else
fObj.value = str;
}
else if (typeof window.HTMLTextAreaElement != "undefined")
fObj.value = fObj.value.substring(0, fObj.selectionStart) + str + fObj.value.substring(fObj.selectionEnd);
else fObj.value += str;
}[blue]
[B]function sC() {
cPos = document.selection.createRange().duplicate();
}[/B][/blue]
window.onload = function() {
fObj = document.forms["newthread"].elements["forummessage"];
if (ieC) {
fObj.onclick = function() { sC(); }
fObj.onkeyup = function() { sC(); }
fObj.onselect = function() { sC(); }
}
}
Nu vill jag implementera javascripten för den feta rödmarkerade delen i HTML-koden ovan i javascriptdelen som jag nyss presenterade. Det är här jag har haft problem. Kan tillägga att jag absolut inte är någon mästar på detta, tyvärr.
[blue]
[B]var cPos,
fObj,
ieC = Boolean(document.selection && document.selection.createRange);[/B][/blue]
var cPosr,
fObjr,
ieC = Boolean(document.selection && document.selection.createRange);
[blue][B]function sC() {
cPos = document.selection.createRange().duplicate();
}[/B][/blue]
window.onload = function() {
fObj = document.getElementById('f').elements["description"]; // ÄNDRA HÄR!
fObjr = document.getElementById('f').elements["report"]; // ÄNDRA HÄR!
if (ieC) {
fObj.onclick = function() { sC(); }
fObj.onkeyup = function() { sC(); }
fObj.onselect = function() { sC(); }
fObjr.onclick = function() { sC(); }
fObjr.onkeyup = function() { sC(); }
fObjr.onselect = function() { sC(); }
}
}
function lnk(t, type){
var txt = window.prompt("Skriv texten som skall länkas", ""),
url = "";
if (txt != null && trim(txt).length != 0) {
if(t == "url") {
url = window.prompt("Skriv in URL:en för din länk:", "http://");
} else if(t == "email") {
url = window.prompt("Skriv in epost-adressen för länken:", "");
}
if (url != null && trim(url).length != 0) {
if (ieC) {
if(type == "d") {
fObj.value += "[" + t + "=" + url + "]" + txt + "[/" + t + "]";
} else if(type == "r") {
fObjr.value += "[" + t + "=" + url + "]" + txt + "[/" + t + "]";
}
} else if (typeof window.HTMLTextAreaElement != "undefined") {
if(type == "d") {
fObj.value = fObj.value.substring(0, fObj.selectionStart)
+ "[" + t + "=" + url + "]"
+ fObj.value.substring(fObj.selectionStart, fObj.selectionEnd)
+ txt + "[/" + t + "]"
+ fObj.value.substring(fObj.selectionEnd);
} else if(type == "r") {
fObjr.value = fObjr.value.substring(0, fObjr.selectionStart)
+ "[" + t + "=" + url + "]"
+ fObjr.value.substring(fObjr.selectionStart, fObjr.selectionEnd)
+ txt + "[/" + t + "]"
+ fObjr.value.substring(fObjr.selectionEnd);
}
}
}
}
}
function makeBB(c, type){
if (ieC) {
if (typeof cPos != "undefined"){
if(type == "d") {
cPos.text = "[" + c + "]" + cPos.text + "[/" + c + "]";
} else if(type == "r") {
cPosr.text = "[" + c + "]" + cPos.text + "[/" + c + "]";
}
} else {
if(type == "d") {
fObj.value += "[" + c + "][/" + c + "]";
} else if(type == "r") {
fObjr.value += "[" + c + "][/" + c + "]";
}
}
} else if (typeof window.HTMLTextAreaElement != "undefined"){
if(type == "d") {
fObj.value = fObj.value.substring(0, fObj.selectionStart)
+ "[" + c + "]"
+ fObj.value.substring(fObj.selectionStart, fObj.selectionEnd)
+ "[/" + c + "]"
+ fObj.value.substring(fObj.selectionEnd);
} else if(type == "r") {
fObjr.value = fObjr.value.substring(0, fObjr.selectionStart)
+ "[" + c + "]"
+ fObjr.value.substring(fObjr.selectionStart, fObjr.selectionEnd)
+ "[/" + c + "]"
+ fObjr.value.substring(fObjr.selectionEnd);
}
}
}