ChristianL: Probleme beim löschen des letzten Zeichens

Hi Leute,

dank der Hilfe dieses Forums bin ich mit meinem ursprünglichem Problem - dem 'synchronen' befüllen eines Feldes mit Hilfe eines <inputs> schon sehr weit. Nur hat der JavaScript Code noch einen Bug und ich wollte Fragen, wer von euch eine Idee hat, wie ich das lösen könnte:

Ich schreibe in mein Formular ein Wort und lösche die Buchstaben wieder mit Backspace. Dabei bleibt der letzte Buchstabe immerstehn, obwohl ich alle im <input> gelöscht habe. Erst wenn ich wieder ein neues Wort schreibe, wird das alte Wort(der letzte Buchstabe) verworfen.

Kann mir jemand helfen, oder hat eine Idee??

Hier der quelltext:

<html>
<head>

<script type='text/javascript'>
//dynamically update the preview when user types a text
function print(input)
{
 var val = input.value;
 if(!val) return;
 val = val.replace( /\n/g, '<br>');
 document.getElementById('preview').innerHTML = val;

}

</script>

</head>

<body>
<table width="300">
 <tr>
  <th bgcolor="#000000" style="color:#ffffff;font-family:verdana">
   Werbetext:
  </th>
 </tr>
 <tr bgcolor="aaaaaa">
  <td id="preview" height="50">
  </td>
 </tr>
</table>

<form name="myForm" style="font-family:verdana" onsubmit="return false;">
Werbetext <input type="text"  id="werbung" onkeyup="print(this)" name="werbung"/>
</form>
</body>
</html>

  1. Hallo Christian,

    if(!val) return;

    wenn das letzte Zeichen gelöscht wurde ist val "leer" und

    document.getElementById('preview').innerHTML = val;

    wird demnach nicht ausgeführt.

    Viele Grüße,

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
  2. hi,

    Ich schreibe in mein Formular ein Wort und lösche die Buchstaben wieder mit Backspace. Dabei bleibt der letzte Buchstabe immerstehn, obwohl ich alle im <input> gelöscht habe.

    Du rufst die Funktion mit onkeyup auf.
    Du hast Backspace/[del] gedrückt, der Feldinhalt _ist_ jetzt leer - onkeyup "feuert" erst jetzt.

    function print(input)
    {
    var val = input.value;
    if(!val) return;

    !val trifft zu, weil val leer - Funktion wird mit return verlassen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. <script type='text/javascript'>
    //dynamically update the preview when user types a text
    function print(input)
    {
    var val = input.value;
    if(!val) return;

    Dein Problem liegt hier. Ein leerer Wert wird nicht übergeben, am einfachsten änderst du die Zeile so:
    if(typeof val == 'undefined') val = '';

    oder noch einfacher
    if(!val) val = '';

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Yeah!! Super geil!! Danke Struppi! und den anderen natürlich auch!