Zur Navigation

Suchfeld - Voreinstellung

1 lava

Hallo, bei einem Suchformular wird das Input-Feld wie folgt gesteuert:


 $output = '<input name="searchword"  type="text"  value="'.$text.'"   onblur="if(this.value==\'\') this.value=\''.$text.'\';" onfocus="if(this.value==\''.$text.'\') this.value=\'\';" />';

echo $output;

wobei die Variable $text den String "suchen..." enthält.
Idee ist: Wenn ich die Seite aufrufe, steht defaultmäßig "suchen..." in dem Feld, wenn ich ins Feld klicke, verschwindet dieser String und ich kann eine eigene Eingabe machen. Tue ich das nicht und klicke wieder raus, steht wieder "suchen..." da.

Wenn jemand nun ein sinnvolles Wort eingebt, wird danach wunschgemäß gesucht. Problem: Wenn jemand gleich auf den Absendebutton klickt, ohne das defaultmäßige "suchen..." überschrieben zu haben, dann wird im Explorer (erstaunlicherweise nicht im Firefox) trotzdem nach "suchen..." gesucht - logisch, weil ich ja
value="'.$text.'"
dann noch drinstehen habe.
Wenn ich das aber rausnehme, dann ist es nicht defaultmäßig beim ersten Aufruf der Seite, sondern erst beim Rein- und wieder Rausklicken da -> das ist natürlich nicht wunschgemäß.

Auch der Versuch von einem zusätzlichen

onsubmit="if(this.value==\''.$text.'\') this.value=\'\';"

schlug fehl. Welche Möglichkeiten habe ich, damit "suchen..." defaultmäßig drinsteht als value, aber nie als solcher abgeschickt wird -> wenn "suchen..." noch drinsteht, soll ein leerer String abgeschickt werden. (Jede beliebige andere Eingabe soll als sie selbst abgeschickt werden.)

02.03.2009 15:18

2 Jörg Kruse

Das onsubmit würde ich ins form Element einbauen. Die Referenz muss dann natürlich noch entsprechend angepasst werden. Wenn du das input Element mit einer ID kennzeichnest, könnte das so gehen:

?>
<form onsubmit="if (document.getElementById('searchword').value == '<?php echo $text ?>') document.getElementById('searchword').value = '';">
<?php

 $output = '<input name="searchword" id="searchword"  type="text"  value="'.$text.'"   onblur="if(this.value==\'\') this.value=\''.$text.'\';" onfocus="if(this.value==\''.$text.'\') this.value=\'\';" />';

echo $output;

02.03.2009 16:11 | geändert: 02.03.2009 16:13

3 lava

Perfekt - jetzt geht es - danke vielmals :)
Und auch nochmal herzlichen Dank für all die anderen Antworten, die du hier in letzter Zeit gegeben hast.... waren alle hilfreich!

02.03.2009 16:58

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]