Probleme beim löschen des letzten Zeichens
ChristianL
- javascript
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>
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
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
<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.
Yeah!! Super geil!! Danke Struppi! und den anderen natürlich auch!