Autor Thema: Web/JavaScript : Suche per Enter bzw. Button starten  (Gelesen 4495 mal)

Driri

  • Gast
Hallo,

ich sitze hier gerade an einer Webentwicklung. Ich habe ein Frameset, in einem der Frames ist eine Page eingebunden mit folgendem Inhalt (Passthru HTML) :

Zitat
<input name="suchfeld" type="text" size="10"  onkeypress="evalKeyForSubmit(event);">
<input type="button" name="search" value="Suche" onclick="sucheStarten();">

Darüber hinaus habe ich im JS-Header der Page folgendes definiert :

Zitat
function sucheStarten()
{
var suchStr = document.forms[0].suchfeld.value;
var urlStr1 = "LkCat2IndexSearch/?SearchView&Query=";
var urlStr2 = urlStr1.concat(suchStr);
document.forms[0].suchfeld.value = "";
parent.frames[3].location.href = urlStr2;
}

function evalKeyForSubmit(event)
{
if (event && (event.which == 13 || event.which == 14))
  sucheStarten();
}

Ziel soll es sein, daß ich in dem Eingabefeld einen Suchbegriff eingebe und per Enter/Return oder per Button die Suche starte. Das Suchergebnis wird dann in einem anderen Frame angezeigt.

Über den Button funktioniert das wunderbar, aber wenn ich Enter drücke, bekomme ich nur einen Fehler 400 zurück (Unbekannter Befehl).

Ich habe mal mit Firebug den Debugger mitlaufen lassen, wenn das JavaScript ausgeführt wird. Bei beiden Wegen läuft die Funktion "sucheStarten" wunderbar durch, die Variablen werden korrekt gefüllt und der letzte Befehl (parent.frames[3].location.href = urlStr2;) wird auch ausgeführt.

Nur leider halt mit unterschiedlichem Ergebnis.

Ich bin absolut kein JavaScript-Profi und weiß daher an dieser Stelle nicht weiter. Hab ich was übersehen ? Gibts einen einfacheren Weg, um das zu bewerkstelligen ?
« Letzte Änderung: 06.09.07 - 16:44:28 von Driri »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #1 am: 06.09.07 - 13:25:18 »
Welcher Browser  ???
Mit dem IE funktionieren das event so nicht. 
Manchmal helfen so Sachen wie document.forms[0].suchfeld.blur(); im  body der if von evalKeyForSubmit. Man sollte dann aber nach dem wahren Grund suchen.

Kleinigkeit, aber ich würd das oben so schreiben: 
Code
suchStr = document.forms[0].suchfeld.value;
document.forms[0].suchfeld.value = "";
parent.frames[3].location.href = "LkCat2IndexSearch/?SearchView&Query="  + suchStr
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline hwenck

  • Junior Mitglied
  • **
  • Beiträge: 58
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #2 am: 06.09.07 - 13:27:44 »
Für mich hat sich folgende Lösung als praktikabel erwiesen.
1. Einfache Suche in einer eingebetteten Ansicht:
- auf der Maske ein Suchfeld und ein $$Return
- im $$Return (berechnet) "[/" + @WebDbName + "/$$ViewTemplate for " + @ViewTitle + "?OpenForm&StartKey=" + StartText + "]"
jedes 'Enter' springt in der 1. sortierten Spalte zur eingegebenen Buchstabenkombination

Die URL lautet:
https://server/db.nsf/$$ViewTemplate for Ansicht?OpenForm&StartKey=meine Suche

2. Eine umfangreiche Suche im Web kann mit Notes Mitteln nur eingeschränkt realisiert werden.
 z.B. Suche nach leerem Feld
Dafür nutze ich Java
« Letzte Änderung: 06.09.07 - 13:30:45 von hwenck »

Driri

  • Gast
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #3 am: 06.09.07 - 13:31:03 »
Getestet habe ich das im IE 6 und im Firefox 2.0.

Im Firefox sehe ich halt im Debugger, daß das Script eigentlich abgearbeitet wird. D.h. er läuft in die If-Schleife rein und startet auch die Funktion sucheStarten.

Fehlermeldung in der Console oder so habe ich nicht.

Das mit dem blur() probiere ich mal aus. Für mich ist leider der wahre Grund so nicht erkennbar. Dafür reichen meine Web- und insbesondere meine JavaScript-Kenntnisse nicht aus.

Driri

  • Gast
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #4 am: 06.09.07 - 13:36:48 »
@hwenck :

Gerade das will ich ja nicht. Dann müßte ich das Suchfeld ja in ein anderes Frame stecken.


@Axel :

Jetzt wirds lustig. Ich habe das blur() in der If-Schleife mal hinter das sucheStarten() gepackt. Wenn ich im Debugger durchsteppe, sehe ich jetzt, daß das Suchergebnis korrekt angezeigt wird. Sobald allerdings das blur() ausgeführt wird, habe ich im Frame wieder den 400er stehen.

Fehlt da irgendwas ? Muß ich einen Rückgabewert liefern oder so was ?

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #5 am: 06.09.07 - 14:50:36 »
Return. Gute Idee. Versuch mal
Code
onkeypress="evalKeyForSubmit(event);return false"
in dem onkeypress-handler unten. 
In IE wird der  eventhandler nicht funktionieren. Dafür gibts dieses if-Konstrukt als erste Zeile deiner event-Handler Funktion
evalKeyForSubmit(event):
Code
if(!event && window.event) {
    event = window.event;
  }
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Driri

  • Gast
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #6 am: 06.09.07 - 16:03:18 »
JA ! Ich hab es, danke Axel. Das mit dem Return war der Tipp.

Folgendermaßen funktioniert das jetzt :

Die Seite enthält als Passthru-HTML
Zitat
<input name="suchfeld" type="text" size="10" onkeypress="return evalKeyForSubmit(event);">
<input type="button" name="search" value="Suche" onclick="sucheStarten()">

Im JS-Header sind die beiden Funktionen "sucheStarten" und "evalKeyForSubmit" definiert
Zitat
function sucheStarten()
{
suchStr = document.forms[0].suchfeld.value;
document.forms[0].suchfeld.value = "";
parent.frames[3].location.href = "LkCat2IndexSearch/?SearchView&Query=" + suchStr;
}

Zitat
function evalKeyForSubmit(event)
{
if(!event && window.event)
   {
   event = window.event;
   }
if (event.which == 13 || event.which == 14)
// ENTER oder RETURN gedrückt, also Suche starten
   { 
   sucheStarten();
   return false;
   }
else
   { 
   return true;
   }
}

Ich hatte das vorher schonmal mit dem Return im If-Zweig, allerdings hatte ich da die Klammern ({}) für die Aktionen nicht gesetzt und dann ist jedesmal "return false;" ausgeführt worden.

Driri

  • Gast
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #7 am: 06.09.07 - 16:20:51 »
Mist. Natürlich wieder zu früh gefreut. Im Firefox rennt das so wunderbar, aber im IE habe ich immer noch den Error 400.

Ich vermute, ich hab das mit dem zusätzlichen If-Zweig für den IE falsch verstanden. Ich habe mal bei SelfHTML geschaut wegen des Eventhandlers.

Daraufhin habe ich das noch wie folgt angepaßt, was leider auch nicht läuft im IE (im Firefox läufts natürlich weiterhin) :

Zitat
function evalKeyForSubmit(event)
{
if(!event && window.event)
   {   
   event = window.event;
   }
if (event.which)
   {   
   taste = event.which
   }
   else if (event.keycode)
   {
   taste  = event.keycode
   }
if (taste == 13 || taste == 14)
// ENTER oder RETURN gedrückt, also Suche starten
   { 
   sucheStarten();
   return false;
   }
   else
   { 
   return true;
   }
}

Noch eine Idee ?

Driri

  • Gast
Re: Web/JavaScript : Suche per Enter bzw. Button starten
« Antwort #8 am: 06.09.07 - 16:44:00 »
Ok, habs jetzt mit ein wenig Google-Suche herausgefunden. Für Firefox 2 und IE 6 (andere Versionen habe ich hier nicht zu Testen) reicht folgender Code aus :

Zitat
function evalKeyForSubmit(event)
{
   if (event.keyCode == 13 || event.keyCode == 14)
   // ENTER oder RETURN gedrückt, also Suche starten
   { 
   sucheStarten();
   return false;
   }
   else
   { 
   return true;
   }
}

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz