Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: alkuhn am 25.05.04 - 08:19:34
-
Hallo,
ich habe mal wieder ein kleines Problem und komme nicht weiter. Ich habe auf einer WebSeite ein Feld für die Volltextsuche. Im onSubmit-Ereignis rufe ich eine Funktion auf die Prüft, ob das Feld Volltextsuche einen Inhalt hat und wenn ja, wird die Suche gestartet. Diese habe ich so gemacht, damit die Suche funktioniert, wenn ein Suchbegriff eingegeben wird und der Besucher Enter drückt.
Nun habe ich auf der gleichen Seite noch ein Feld Kategorie gemacht vom Typ Optionsschaltfläche. Dieses Feld steuert den Inhalt der Ansicht. Mein Problem ist, dass wenn man nun in diesem Feld eine andere Kategorie anklickt, das onSubmit Ereignis ausgelöst wird.
Kann man das verhindern? Oder kann man prüfen, wer das onSubmit ausgelöst hat?
Bin für jeden Hinweis dankbar.
Viele Grüße
-
Wird bei deiner Optionsschaltfläche ein Refresh ausgelöst?
(Felder bei Schlüsselwortänderung aktualisieren)
-
Hallo,
ich habe den Refresh im Feld rausgenommen. Allerdings wird dann meine Ansicht auch nicht mehr aktualisiert. Gibt es da noch eine Möglichkeit?
Viele Grüße
-
Die Aktualisierung kann man zumeist auch mit Java-Script machen. Felder nachberechnen und Elemente ein-/ausblenden.
Das hatten wir aber heute schon mal, mit einer Schaltfläche, die nur unter bestimmten Bedingungen sichtbar sein sollte.
-
Da habe ich absolut keine Ahnung, wie man das machen könnte :-(
-
Das hatten wir aber heute schon mal, mit einer Schaltfläche, die nur unter bestimmten Bedingungen sichtbar sein sollte.
Ist das ein Beitrag hier im Forum? Habe ihn nicht gefunden ... Ich habe gerade noch ein paar Dinge probiert - mit Notes-Mitteln - führt aber alles nicht zum Erfolg. Ich habe keine Vorstellung, wie man das mit LotusScript aktualisieren könnte. Hättest Du mir vielleicht noch einen Hinweis?
Vielen Dank
-
Lauter Winnie Puuhs als Avatare. Ich blick nicht durch, wer wer ist.
Was du mal probieren könntest:
eine globale Variable, die du z.B. auf 'true' setzt, wenn du den Suche-Button drückst.
Und in der Prüffunktion dann die Variable checken.
Ich hatte die gleiche Problematik auch schon und habs dann mit DHTML gelöst.
Damit kannst du alles auf einmal vom Server holen und bei Bedarf einzelne Elemente per JS verstecken.
mit einer eingebetteten Ansicht wird das allerdings wahrscheinlich leider nicht funktionieren
-
Hatte den link vergessen:
http://www.atnotes.de/index.php?board=7;action=display;threadid=15915;start=0 (http://www.atnotes.de/index.php?board=7;action=display;threadid=15915;start=0)
zusammengefasst:
mit window.document.forms[0].Feldname.style.display = XX
kann man Felder per JS ein und ausblenden.
XX = "" Feld ist sichtbar (Wenn keine anderen Hide.when-Formeln greifen)
XX="none" Feld ist verborgen.
Der Vorteil dabei ist, dass dies im Browser geschieht, sodass kein langwieriges Neuladen erfolgt
-
Ich danke Euch für die vielen Antworten. Allerdings bringe ich es nicht in den Zusammenhang mit meinem Problem. Vermutlich stehe ich gerade etwas auf dem Schlauch.
Meine Lösung wäre, wenn ich die Möglichkeit hätte bei meiner Optionsschaltfläche "Felder bei Schlüsselwortänderung aktualisieren" deaktivieren könnte (dann wird onSubmit nicht ausgeführt) und die Verknüpfung bei meiner eingebetteten Ansicht trotzdem aktualisiert werden würde.
Viele Grüße
-
globale Variable; default 'false'
1. Fall
Kategorie wechseln -> onSubmit wird ausgelöst
-> Eingabevalidierungsfunktion wird aufgerufen; die checkt den Wert der globalen Variable -> der ist noch 'false' -> Funktion tut nix
2. Fall
Suche wird gestartet (z.B. per Klick auf Suche-Button) -> Variable auf 'true' setzen -> onSubmit wird ausgelöst
-> Eingabevalidierungsfunktion wird aufgerufen; die checkt den Wert der globalen Variable -> der ist jetzt 'true' -> Funktion validiert
is aber nur ne vage Idee
-
Das ist eine gute Idee. Ich versuche mal mein Glück. Ich danke Dir und sage Bescheid, ob ich damit weiterkomme.
-
globale Variable; default 'false'
Hallo Thomas,
ich wollte mich noch bedanken. Die Idee mit der globalen Variablen war genau meine Lösung. Darüber kann ich alle Funktionen steuern, was super funktioniert.
Vielen Dank und viele Grüße
-
nix zu danken.
das funktioniert echt?
wie hast du es denn gemacht?
in der Maske im JS-Header die Variable deklariert und die Validierungsfunktion?
in der Maske im onSubmit-Event die Variable prüfen und ggf. die Validierungsfunktion aufrufen?
was steht denn im Button, der die Suche startet?
was passiert, wenn der Benutzer die Suche nicht über den Button startet, sondern mit der Eingabetaste?
-
Hallo Thomas,
im Html-Head-Inhalt definiere ich die globale Variable var_submitkontrolle und setze sie auf "true".
Mein Auswahlfeld für die Kategorien ist vom Typ Optionsschaltfläche. Dort setze ich im onClick-Ereignis die Variable var_submitkontrolle auf "false".
Im onSubmit der Maske prüfe ich nun ab, welchen Wert die Variable hat. Wenn der Wert true ist, muss onSubmit über das Suchfeld ausgelöst worden sein und zwar über die Enter-Taste. Dann führe ich das Script für die Suche aus. Wenn die Variable den Wert false hat, führe ich nichts aus und setze sie wieder auf true.
Im Button der Suche führe ich direkt das Script für die Suche aus - also das Gleiche, was bei onSubmit steht.
Die Schaltfläche löst nicht das onSubmit aus.
Viele Grüße
-
Aha. Danke.
-
Ich hoffe, es war etwas verständlich. Ansonsten schicke ich es Dir direkt zu. Auf jeden Fall war Dein Hinweis auf die Variable genau richtig. Daran hätte ich nie gedacht.
-
Ich verstehe vollkommen, danke :)
-
Ich hatte ein ähnliches Problem, wobei ich das Problem und die Lösung hier vorstellen möchte. Dieser Thread hat mich darauf gebracht.
Problem
Ich habe einen Dialog für das Web gebaut, der zum einen Auswahllisten enthält und zum anderen eine Suchbox. Zu guter Letzt ist die Box dazu gedacht, dass man eine Liste von Personen damit bearbeiten kann. Das bedeutet, dass es keinen submit-Befehl geben soll, da die Daten über JavaScript an das übergeordnete Fenster übergeben werden (vgl. die Dialog-Demo von jnotes). Nun ist es aber so, dass wenn man in das Suchfeld einen Begriff eingegeben hat und man die Enter Taste drückt, der submit-Befehl ausgelöst wird. Die Folge davon ist, dass in dem Fenster "Form Processed" erscheint und der eigentliche Dialog verschwindet. Das ist nicht wünschenswert.
Lösung
In dem onSubmit-Event einfach nur "return false;" einzutragen bringt mich leider nicht weiter. Zwar passiert dann bei Eingabe von Enter nichts, jedoch werden bei Änderung der Auswahllisten die Abhängigkeiten auch nicht aktualisiert (welche im Regelfall durch den onChange-Event über eine Standard-Domino Funktion mit einem expliziten submit-Befehl aktualisiert werden).
Ein Testeintrag im onChange-Event des entsprechenden Feldes brachte das erfreuliche Ergebnis, dass der Domino-onChange-Event an den Benutzerdefinierten onChange angehängt wird. Ich habe also eine globale Variable im Haeder der Seite eingeführt, welche im onChange der Auswahllisten manipuliert wird. Wenn der onSubmit-Event ausgelöst wird, fragt dieser die soeben manipulierte Variable ab und setzt diese zurück. Andernfalls wird "false" zurückgegeben.
Diese Lösung ist noch provisorisch. Denkbar ist auch, dass durch Auslösen der Enter Taste die Suchfunktion automatisch aktiviert wird. Das prüfe ich allerdings erst zu einem späteren Zeitpunkt.
Viele Grüße
Harry
-
Hallo,
nur noch so als Ergänzung:
Wenn man im Web-Frontend nicht jedes Element einzeln ausblenden will, kann man in der Maske um bestimmte Abschnitte mit Durchgangs-HTML auch einen <div>-Tag bauen. Damit lassen sich dann komplette Abschnitte ein- und ausblenden.
(style="visibility:visible/hidden")
Thomas