hallo allerseits,
habe ein kleines javascript-problem. vielleicht kann die eine oder der andere mir dabei helfen, es zu lösen.
ich habe auf einer seite mehrere formular-textfelder zur texteingabe. vergleichbar mit einem eingabefeld in einem gästebuch oder forum, wo man den text mittels tags wie [b]text[/b] formatieren kann. mit EINEM textfeld ist es gar kein problem, da ich ja mit
documents.FORMULARNAME.NAME DES TEXTFELDES.usw
das eingabefeld festlegen kann. aber ab zwei textfeldern habe ich ja das problem, daß ich der funktion noch zusätzlich sagen muß, in welchem textfeld sie die aktion ausführen soll. man kann natürlich für jedes textfeld eine eigene funktion definieren (was ich in meiner not auch erstmal gemacht habe und was auch funktioniert), aber das sehe ich sogar als JS-laie, daß dies schwachsinnig ist.
nun habe ich die funktion und den aufruf leicht abgewandelt, aber bekomme die fehlermeldung "formname" (die variable) ist undefiniert...
hier die funktion:
########
<SCRIPT language="JavaScript" type="text/javascript">
<!--
function DoPrompt(action,formname) {
var revisedMessage;
var currentMessage = document.insertform.elements[formname].value;
if (action == "b") {
var txt = document.selection.createRange().text;
insertAtCaret(this.insertform.elements[formname],´[b]´ + txt + ´[/b]´);
document.insertform.elements[formname].focus();
return;
}
if (action == "i") {
var txt = document.selection.createRange().text;
insertAtCaret(this.insertform.elements[formname],´[i]´ + txt + ´[/i]´);
document.insertform.elements[formname].focus();
return;
}
if (action == "u") {
var txt = document.selection.createRange().text;
insertAtCaret(this.insertform.elements[formname],´[u]´ + txt + ´[/u]´);
document.insertform.elements[formname].focus();
return;
}
if (action == "http") {
var txt = document.selection.createRange().text;
insertAtCaret(this.insertform.elements[formname],´[url=http://www.link.de
]´ + txt + ´[/url]´);
document.insertform.elements[formname].focus();
return;
}
if (action == "mail") {
var txt = document.selection.createRange().text;
insertAtCaret(this.insertform.elements[formname],´[mail]´ + txt + ´[/mail]´);
document.insertform.elements[formname].focus();
return;
}
if (action == "quote") {
var txt = document.selection.createRange().text;
insertAtCaret(this.insertform.elements[formname],´[quote]´ + txt + ´[/quote]´);
document.insertform.elements[formname].focus();
return;
}
}
function storeCaret (textEl) {
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}
function insertAtCaret (textEl, text) {
var currentMessage = document.insertform.elements[formname].value;
if (textEl.createTextRange && textEl.caretPos) {
var caretPos = textEl.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ´ ´ ? text + ´ ´ : text;
} else
textEl.value = currentMessage + text;
}
//-->
</SCRIPT>
########
hier der aufruf (11 steht für 11.formularelement):
<td>
<a href="#" onclick="javascript:DoPrompt(´b´,´11´);"><img src="images/misc/bold.gif" border=0></a>
<a href="#" onclick="javascript:DoPrompt(´i´,´11´);"><img src="images/misc/italic.gif" border=0></a>
<a href="#" onclick="javascript:DoPrompt(´u´,´11´);"><img src="images/misc/underline.gif" border=0></a>
<a href="#" onclick="javascript:DoPrompt(´http´,´11´);"><img src="images/misc/http.gif" border=0></a>
<a href="#" onclick="javascript:DoPrompt(´mail´,´11´);"><img src="images/misc/email.gif" border=0></a>
</td>