Smiley-Code in Gästebuch bei Klick automatisch einfügen

davy1993

Well-known member
ID: 396641
L
4 Januar 2008
2.959
85
Hi !

Ich baue gerade ein Gästebuch?

Wie kann ich, wenn man auf einen Smiley klickt, den Text " :) " einfügen?
 
Hm, so schwer isses nicht, die Funktion addtags sollte schon von alleine gehen ohne dass Du viel daran machst.

Musst halt nur ganz am Anfang der Funktion entsprechend anpassen:

Code:
var input = document.forms['formular'].elements['eingabe'];

Da muss Dein Formularname rein und der Name des Eingabefelds.


Und dann beim Smilie ungefähr so:

Code:
 <img src="smilie.gif" onClick="addtags(':-)','')" alt="Smile">
 
Hm, so schwer isses nicht, die Funktion addtags sollte schon von alleine gehen ohne dass Du viel daran machst.

Musst halt nur ganz am Anfang der Funktion entsprechend anpassen:

Code:
var input = document.forms['formular'].elements['eingabe'];

Da muss Dein Formularname rein und der Name des Eingabefelds.


Und dann beim Smilie ungefähr so:

Code:
 <img src="smilie.gif" onClick="addtags(':-)','')" alt="Smile">

Sorry, aber ich komme damit nicht so gut zurecht :)

Ich poste mal mein Script:

Code:
            <form name="form1" method="post" action="<? echo $HTTP_SERVER_VARS['PHP_SELF'] ?>?action=save">
              <table width="400" border="0" cellspacing="0" cellpadding="0" align="center">
                <?php if ($HTTP_GET_VARS['error'] == 1) { ?>
                <tr> 
                  <td colspan="2"><b><font color="<?php echo $ERRORTEXT_COLOR ?>">Bitte fülle alle Pflichtfelder aus.</font></b></td>
                </tr>
                <tr> 
                  <td width="100"> </td>
                  <td width="300"> </td>
                </tr>
                <?php } ?>
                <?php if ($HTTP_GET_VARS['error'] == 2) { ?>
                <tr> 
                  <td colspan="2"><b><font color="<?php echo $ERRORTEXT_COLOR ?>">Bitte trage den Sicherheitscode richtig ein.</font></b></td>
                </tr>
                <tr> 
                  <td width="100"> </td>
                  <td width="300"> </td>
                </tr>
                <?php } ?>
                <tr> 
                  <td width="100">Dein Name:</td>
                  <td width="300"> 
                    <input type="text" name="name" size="20" value="<?php echo $HTTP_GET_VARS['name'] ?>" maxlength="20">
                  </td>
                </tr>
                <tr> 
                  <td width="100">Deine eMail Adresse: *</td>
                  <td width="300"> 
                    <input type="text" name="email" size="20" value="<?php echo $HTTP_GET_VARS['email'] ?>" maxlength="50">
                  </td>
                </tr>
                <tr> 
                  <td width="100">Deine Homepage: *</td>
                  <td width="300"> 
                    <?php 
					if ($HTTP_GET_VARS['homepage']) $value = $HTTP_GET_VARS['homepage'];
					else $value = "https://";
					?>
                    <input type="text" name="homepage" size="20" value="<?php echo $value ?>" maxlength="50">
                  </td>
                </tr>
                <tr> 
                  <td width="100">Text:</td>
                  <td width="300"> 
                    <textarea id="textfield" name="comment" cols="25" rows="4"><?php echo $HTTP_GET_VARS['comment'] ?></textarea>


                  </td>
                </tr>
                <tr> 
                  <td width="400" height="20" colspan="2"> 

/ HIER SOLLEN DIE SMILIES REIN /

                  </td>
                </tr>
                <tr> 
                  <td width="400" height="20" colspan="2"> </td>
                </tr>
                <tr> 
                  <td width="100" height="20"> </td>
                  <td width="300" height="20"> </td>
                </tr>
				<?php if ($ANTISPAM == "1") {?>
                <tr> 
                  <td width="100" height="40">Sicherheitscode:</td>
                  <td width="300" height="40"><img src="<?php echo $pic_name ?>"></td>
                </tr>
                <tr> 
                  <td width="100" height="20"> </td>
                  <td width="300" height="20"> 
                    <input type="text" name="antispam" size="4" maxlength="4">
                    <input type="hidden" name="hashfile" value="<?php echo $txt_name ?>">
                  </td>
                </tr>
                <tr>
                  <td width="100" height="20"> </td>
                  <td width="300" height="20"> </td>
                </tr>
				<?php } ?>
                <tr> 
                  <td width="100" height="20"> </td>
                  <td width="300" height="20"><font size="1">* = optionale Felder</font></td>
                </tr>
                <tr> 
                  <td width="100"> </td>
                  <td width="300"> 
                    <input type="submit" name="Submit" value="Senden">
                  </td>
                </tr>
              </table>
            </form>
 
Versteh ehrlich gesagt nicht was das Problem ist... hab Dir doch genau gesagt, was Du machen musst... das JavaScript muss rein und die Smilies als Grafiken rein, so wie von mir gepostet.

Das einzige was Du am JavaScript ändern musst ist die erste Zeile in der Funktion, kann ich Dir nun noch etwas konkretisieren, falls das das Problem ist:

Code:
	var input = document.forms['form1'].elements['comment'];

Nu haste aber echt alles... ;)
 
Versteh ehrlich gesagt nicht was das Problem ist... hab Dir doch genau gesagt, was Du machen musst... das JavaScript muss rein und die Smilies als Grafiken rein, so wie von mir gepostet.

Das einzige was Du am JavaScript ändern musst ist die erste Zeile in der Funktion, kann ich Dir nun noch etwas konkretisieren, falls das das Problem ist:

Code:
	var input = document.forms['form1'].elements['comment'];

Nu haste aber echt alles... ;)

Wo muss das hin?

Code:
var input = document.forms['form1'].elements['comment'];
 
Hm, nu schreib ich's aber echt zum dritten mal 8O: Das einzige was Du am JavaScript ändern musst ist die erste Zeile in der Funktion. ;)

Code:
function insert(aTag, eTag) {
  var input = document.forms['formular'].elements['eingabe'];
  input.focus();

Da, siehst Du sie? Die muss angepasst werden.

Okay ich geb zu ich hatte oben addtags gesagt, die Funktion heißt aber insert. Is ja egal. Die erste Zeile musst Du jedenfalls anpassen.
 
Es ist mir wirklich peinlich, aber ich versteh es nicht :(

Bitte sei nicht böse, aber ich bin ganz neu in JavaScript ;)

Könntest du es in meinem Script oben einfügen?

Das wäre super nett !


Hm, nu schreib ich's aber echt zum dritten mal 8O: Das einzige was Du am JavaScript ändern musst ist die erste Zeile in der Funktion. ;)

Code:
function insert(aTag, eTag) {
  var input = document.forms['formular'].elements['eingabe'];
  input.focus();

Da, siehst Du sie? Die muss angepasst werden.

Okay ich geb zu ich hatte oben addtags gesagt, die Funktion heißt aber insert. Is ja egal. Die erste Zeile musst Du jedenfalls anpassen.
 
Also nochmal. Du nimmst das JavaScript und korrigierst die erste Zeile, so wie ich es sagte. Dann bekommst Du das:

Code:
<script type="text/javascript">
<!--
function insert(aTag, eTag) {
  var input = document.forms['form1'].elements['comment'];
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);      
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}
//-->
</script>

Das fügst Du nun bei Dir ein.

Dann nimmst Du die Smiliegrafik her, sagen wir mal die heißt smilie.gif. Dann müsstest Du das Bild so einbinden, wie es in meinem zweiten Posting steht:

Code:
<img src="smilie.gif" onClick="insert(':-)','')" alt="Smile">

da hin wo Du es halt hin haben willst.


Mehr kann ich nicht tun. Weder weiß ich wie oder wohin Du nun konkret die Grafiken formatieren willst, noch hab ich Lust mich durch den unformatierten Spaghetti-Code zu wurschteln... :p

Wenn Du jemanden brauchst, der Dir das komplett umsetzt nach Deinen Wünschen dann musst es halt mal in Lose4Scripts probieren. ;)
 
Also nochmal. Du nimmst das JavaScript und korrigierst die erste Zeile, so wie ich es sagte. Dann bekommst Du das:

Code:
<script type="text/javascript">
<!--
function insert(aTag, eTag) {
  var input = document.forms['form1'].elements['comment'];
  input.focus();
  /* für Internet Explorer */
  if(typeof document.selection != 'undefined') {
    /* Einfügen des Formatierungscodes */
    var range = document.selection.createRange();
    var insText = range.text;
    range.text = aTag + insText + eTag;
    /* Anpassen der Cursorposition */
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -eTag.length);
    } else {
      range.moveStart('character', aTag.length + insText.length + eTag.length);      
    }
    range.select();
  }
  /* für neuere auf Gecko basierende Browser */
  else if(typeof input.selectionStart != 'undefined')
  {
    /* Einfügen des Formatierungscodes */
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
    /* Anpassen der Cursorposition */
    var pos;
    if (insText.length == 0) {
      pos = start + aTag.length;
    } else {
      pos = start + aTag.length + insText.length + eTag.length;
    }
    input.selectionStart = pos;
    input.selectionEnd = pos;
  }
  /* für die übrigen Browser */
  else
  {
    /* Abfrage der Einfügeposition */
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    /* Einfügen des Formatierungscodes */
    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
  }
}
//-->
</script>

Das fügst Du nun bei Dir ein.

Dann nimmst Du die Smiliegrafik her, sagen wir mal die heißt smilie.gif. Dann müsstest Du das Bild so einbinden, wie es in meinem zweiten Posting steht:

Code:
<img src="smilie.gif" onClick="insert(':-)','')" alt="Smile">

da hin wo Du es halt hin haben willst.


Mehr kann ich nicht tun. Weder weiß ich wie oder wohin Du nun konkret die Grafiken formatieren willst, noch hab ich Lust mich durch den unformatierten Spaghetti-Code zu wurschteln... :p

Wenn Du jemanden brauchst, der Dir das komplett umsetzt nach Deinen Wünschen dann musst es halt mal in Lose4Scripts probieren. ;)

Vielen Dank für deine Mühe !

Jetzt klappt es !