Probleme mit Formular senden ohne Button

wenco

Erfahrenes Mitglied
Hallo
ich habe ein Suchfeld mit LibeSearch-Abfrage. Soweit so gut.
Ich möchte, dass bei Auswahl eines Treffers, die Sucheseite aufgerufen wird.
Das funktioniert auch.

Es passiert (zumindest in Firefox) aber auch dann, wenn das Suchfeld leer ist.
Also, wenn ich nur ins Suchfeld klicke und wieder rausklicke, wird das Formular auch gesendet.
Das ist natürlich unschön. Was muss ich anders machen?
Hier die Scriptstellen. Jemand ne Idee?

Das Form:

HTML:
<form action="meinesuchenseite.php" method="get">
<input type="text" name="name" id="inputString"  value="" onkeyup="lookup(this.value);" onblur="fill();"/>
<div style="display: none;">Ausgabe der Treffer</div>

JavaScript:

<script type="text/javascript">
function lookup(inputString) {

if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
}
else {
$.post("script.php", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$('#suggestions').show();
$('#autoSuggestionsList').html(data);
}
});
}
}

function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);

/* Hier die Stelle, nach dem auswählen senden*/
document.forms[0].submit();
}
</script>


LETZTE ZEILE im Script wird Formular gesandt.

wenco
 
Habe ich versucht, indem ich einfach die Stelle von oben im Script:

if(inputString.length == 0) {

}

benutzt habe. sah für mich logisch aus. Kann PHP (Grundlagen) , aber kann gar kein JS.

Aber dann gibts immer ne Fehlermeldung: inputString ist undefiniert.
Wie müsste das denn aussehen?
 
Hi,

inputString ist eine lokale Variable innerhalb der Funktion lookup(). In der Funktion fill() heisst der Hauptverdächtige thisValue. Das Prinzip müsstest Du doch von PHP her kennen.

LG
 
Ja, habe ich natürlich auch versucht.
(Ehrlich gesagt habe ich aus mangelndem Vermögen alle variablen mal ausprobiert :) )

Ich kann zwar
document.write (thisValue);

ausgeben und bekomme ein Ergebnis, aber dies hier funktioniert nicht. Oder schreibe ich das falsch?

if(thisValue ==""){
document.forms["searchform"].submit();
}

Ach ich bin ja so blöd :)

Es muss natürlich
thisValue !=
sein und nicht thisValue ==

na, dann kann ich ja lange tüfteln.
Probiere ich gleich aus!

Also das problem besteht immer noch im Firefox.

der gibt bei document.write (thisValue);
auch undefined aus, im Gegensatz zum IE, der den Wert der Variablen hat.
(JS ist an in Firefox)
 
So würdest Du das Formular ja nur abschicken, wenn thisValue leer ist (allerdings übergibst Du auch gar nichts an diese Funktion...). Verneinung funktioniert ebenfalls wie in PHP.

LG

PS.: Was ist das für ein JS-Framework, das Du da benutzt?

EDIT: Und was gibt der IE aus? Was sagt die Fehlerkonsole des FF?
 
Zuletzt bearbeitet:
Wie es ausschaut habe ich es jetzt! Scheint zu gehen:

if(thisValue.length >0){
document.forms["searchform"].submit();
}

Ich habe eigentlich die Sphider-Suche und habe sie mit einem andern Livesearch-Script kombiniert (Wenn es Dich interessiert, suche ich den Link raus).
Sphider enthält zwar auch eine Livesearchfunktion, aber die arbeitet nur mit den Parametern columns und action innerhalb des input-Feldes und da meckert der Validator.

Darum habe ich ein anderes Script gesucht und dieses sendete das Formular immer nur mit Button.

FF gab immer nur undefined aus.

Danke Dir kuddeldaddeldu, nehme mal an, auch aus dem Norden.
Gruß wenco
 

Neue Beiträge

Zurück