Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: FRANKI am 11.06.03 - 14:37:17

Titel: submit (Maske im Browser)
Beitrag von: FRANKI am 11.06.03 - 14:37:17
Hallo alle zusammen,
mal wieder ein kleines WEB-Problem:

Ich habe eine Maske, die per Brwoser aufgerufen wird.
In dieser Maske können verschiedene Werte angewählt werden, müssen aber nicht.

Nach der Anwahl oder auch sofort, muß der Anwender einen Button drücken.
Das funktioniert auch alles, aber es sollte auch mit einem einfachen Return oder Enter-Tastendruck funktionieren.
Dazu muß für den entspr. Butten als HTML-Code
<input TYPE=submit.......
stehen.

Bei mir steht : <input TYPE=button .........

Was mache ich verkehrt ??

Danke
Franki
Titel: Re:submit (Maske im Browser)
Beitrag von: Till_21 am 11.06.03 - 17:34:30
Bei mir steht : <input TYPE=button .........

Anfuehrungszeichen ?
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 11.06.03 - 18:11:54
Du hast Recht.
Der submitet immer über eine automatisch generierte JavaScript - Funktion.

War mir nie so bewusst, oder ich habe wirklich was vergessen.

Jedenfalls kannst du deinen Button natürlich als passthru-html in die Maske pappen.
<input type="submit" value="hallo">
WebQuerysave Agent läuft.
Hab ich getestet.

Mit Anfürungsstrichen kann das aus meiner Erfahrung eigentlich nichts zu tun haben. Da sind die Browser sehr liberal.

gruss Axel
Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 13.06.03 - 07:58:54
Aber wie macht man das ganz praktisch?????

FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 13.06.03 - 08:21:06
1. Schritt: Du öffnest die Maske im Notes-Client.
2. Schritt: Du stellst dich mit dem Cursor dorthin, wo der Button hinsoll.
3. Schritt: Du wählst im Menü Text den Eintrag Pass-Thru-Html (oder Durchgangs-HTML im dt. client.
4. Schritt: Du schreibst <input type="submit" value="Maske praktisch absenden">
5. Schritt: Du wählst im Menüeintrag Text noch einmal den Eintrag Pass-Thru HTML. Damit ist das in der Folge ausgeschaltet.
Titel: Re:submit (Maske im Browser)
Beitrag von: Meff am 13.06.03 - 08:23:27
Hast Du in den Datenbankeigenschaften die Funktion "Use JavaScript..." aktiviert ?

Meff
Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 13.06.03 - 08:30:23
Danke, das funktionier wunderbar, aber............

Ich bin darauf angewiesen, das da noch was anders vorher passiert.
Das habe ich bisher im Ereignis onClick des Buttons in der Formelsprache realisiert.

Kann ich das auch noch irgendwie unterbringen??

FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 14.06.03 - 15:58:06
Ja:

entweder so:

<input type="submit" onClick="was_in_onClickButton steht" value="hallo">

oder (vielleicht besser)
in onSubmit der Maske schreiben.
Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 16.06.03 - 09:10:30
Leider kann ich das, was ich im onClick-Feld stehen habe nicht in das
onSubmit Feld der Maske schreiben, da ich alles in Formelsprache geschrieben habe, und das onSubmit-Feld Java-Script erwartet.

Ich stehe weiterhin vor einem Rätsel !!

FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 16.06.03 - 14:43:27
kein Problem.

1. Du schreibst.
<input type="submit" onClick="" value="hallo">

als Durchgangshtml wie oben beschrieben.

2. Dann kopierst du den alten onClick code in die Zwischenablage.

3. Du stellst den Cursor zwischen die beiden " hinter onClick=.
4. Du wählst Create/Computed Text oder Erstellen/Berechneter Text im LoNo Client.
5. In das Designfenster des computed Text kopierst du die Formel aus der Zwischenablage.


Titel: Re:submit (Maske im Browser)
Beitrag von: harkpabst_meliantrop am 17.06.03 - 11:28:10
1. Du schreibst.
<input type="submit" onClick="" value="hallo">

als Durchgangshtml wie oben beschrieben.

2. Dann kopierst du den alten onClick code in die Zwischenablage.

3. Du stellst den Cursor zwischen die beiden " hinter onClick=.
4. Du wählst Create/Computed Text oder Erstellen/Berechneter Text im LoNo Client.
5. In das Designfenster des computed Text kopierst du die Formel aus der Zwischenablage.

Hä? Nee, AJ, das wird so nicht funktionieren. Er hat Formelsprache im "Click"-Event (nicht onClick) des Buttons stehen. Der Computed Text macht da doch kein JavaScript raus.

Was vielleicht funktionieren könnte (wegen der Ausführungsreihenfolge aber evtl. auch nicht) ist folgendes:

Lass den alten Button versteckt in der Maske und gib ihm in den HTML-Eigenschaften eine ID oder einenNamen, z.B. "btnBeforeSubmit". Jetzt schreibst du in das onClick des Submit-Buttons:

document.forms[0].btnBeforeSubmit.click()

rein. Natürlich nur, wenn das Tatsächlich die Form 0 ist, sonst anpassen.



Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 18.06.03 - 07:04:14
Hallo
und danke schon mal für die Mühe und Anregungen von Euch!

Funktioniert leider alles nicht !

Hat noch jemand eine Idee??

FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 18.06.03 - 07:36:12
Schau dir im html Quelltext der Seite mit dem alten Button an, wie der Notes http-task den code im click-event konvertiert.  

Kopiere das einfach in den neuen Buttons.

Titel: Re:submit (Maske im Browser)
Beitrag von: harkpabst_meliantrop am 18.06.03 - 11:59:19
Lass den alten Button versteckt in der Maske und gib ihm in den HTML-Eigenschaften eine ID oder einenNamen, z.B. "btnBeforeSubmit". Jetzt schreibst du in das onClick des Submit-Buttons:

document.forms[0].btnBeforeSubmit.click()

rein. Natürlich nur, wenn das Tatsächlich die Form 0 ist, sonst anpassen.
Hattest du auch dieses Kauderwelsch schon probiert? Sollte natürlich soooo aussehen:
Code
document.forms[0].btnBeforeSubmit.click()
Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 18.06.03 - 12:51:34
leider immer noch kein Erfolg.

gibs noch Anregungen ??
immer noch für alles dankbar!

FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 18.06.03 - 13:15:59
leider immer noch kein Erfolg.

gibs noch Anregungen ??
immer noch für alles dankbar!

FRANKI

... nur wenn du in dem html Quelltext der alten Seite den code des Buttons suchst und h.i.e.r postest.  
  :P
Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 18.06.03 - 13:19:33
ist doch überhaupt kein problem:

<input TYPE=button VALUE="Suche starten" NAME="suchestarten" onClick="return _doClick('88bb99762c9295e241256d49003a3f73/$Body/0.4054', this, null)">

wenn ich auch zugeben muß, daß ich das hinter _doClick nicht wirklich verstehe!

Gruß
FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 18.06.03 - 13:39:18
ist doch überhaupt kein problem:

<input TYPE=button VALUE="Suche starten" NAME="suchestarten" onClick="return _doClick('88bb99762c9295e241256d49003a3f73/$Body/0.4054', this, null)">

wenn ich auch zugeben muß, daß ich das hinter _doClick nicht wirklich verstehe!

Schreibe jetzt das als Durchgangs-Html in die Maske:

Zitat
<input TYPE="submit" VALUE="Suche starten" NAME="suchestarten" onClick="return _doClick('88bb99762c9295e241256d49003a3f73/$Body/0.4054', this, null)">
wird oben beschrieben.

Vielleicht ist dieses ominöse

88bb99762c9295e241256d49003a3f73/$Body/0.4054

aus der Docunid oder irgendwelche anderen Interna zusammengesetzt. Es lässt sich aber prinzipiell alles in JavaScript nachprogrammieren.

Versuch bitte erstmal das und sag was passiert.

WICHTIGE FRAGE: Was steht in dem Click-Event des Buttons für ein Formelsprache- Code???

Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 18.06.03 - 13:42:55
wenn ich das da rein schreibe kommt ungültiges Dokument.

Hier ist mein Formel-Quellcode:

FIELD Anzahl_der_Auswahl:=@Elements(Gremienauswahl);

FIELD Liste := "*"+@Implode (Gremienauswahl; "*")+"*";

@Command([FileSave]);

@If (@Contains(Query;"");@URLOpen(@LeftBack(path_info;"/")+"/GKD-RISFehler11?OpenPage");"");

Query_2:=@If (@Contains(Query;"&");@ReplaceSubstring(Query;"&";" AND ");
                             @Contains(Query;"+");@ReplaceSubstring(Query;"+";" AND ");
                             @Contains(Query;"|");@ReplaceSubstring(Query;"|";" OR ");
                             @Contains(Query;",");@ReplaceSubstring(Query;",";" OR ");
                             @Contains(Query;"!");@ReplaceSubstring(Query;"!";" NOT ");Query);

@URLOpen(@LeftBack(path_info;"/")+"/DOKU-SUCHE?OpenAgent&ID="+@Text(@DocumentUniqueID)+"*Query="+@Text(@URLEncode("";Query_2))+"*Anzahl="+@Text (Anzahl_der_Auswahl)+"*Auswahl="+@Text(Liste)+"!Art=Wortsuche:&")
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 18.06.03 - 13:52:42
Mist. Das Problem ist aus dem trivialen Sektor ausgebrochen.  

Du kannst jetzt grundsätzlich nur 2 Sachen machen:

-- den Aufruf des JavaScripts dynamisieren.
-- den Formelsprachen code in JavaScript nachprogrammieren
-- die Logik von Button und aufgerufenen Agenten "DOKU-SUCHE" in einen WebQuerySave Agenten packen.

Fazit: Der Formelsprache code lässt sich für das Web eben nicht so leicht wiederverwenden.

Gruss Axel
Titel: Re:submit (Maske im Browser)
Beitrag von: FRANKI am 18.06.03 - 13:56:59
Hi Axel,
danke für Deine Mühe und Unterstützung.

werde mal posten, wie ich jetzt weitermache.
Muß ich mir allerdings erst mal durch den Kopf gehen lassen,
gut das ein langes Wochenende bevor steht.

Gruß
FRANKI
Titel: Re:submit (Maske im Browser)
Beitrag von: harkpabst_meliantrop am 18.06.03 - 15:01:24
Hmm,

wozu das @Command([FileSave]) in der Formel, wenn du hinterher sowieso ein Submit der Form machst? Das ist mindestens doppelt gemoppelt und schreit nach Ärger.

Und nochwas: Wenn ich zur Emulation des Problems eine Maske mit einem bearbeitbaren Feld und einem Button
Code
@Command([FileSave]);
@Command([FileCloseWindow])
dann wird die Form beim Drücken der Eingabetaste abgeschickt. Aber natürlich nur, wenn der Textcursor auch im Eingabefeld der Form steht.

Das ist aber mit einem in Pass-Through-HTML gecodeten <input type="submit"> ganz genau so. Wenn das funktionieren soll, ohne dass der Fokus manuell auf ein bearbeitbares Feld gesetzt worden ist, musst du meiner Meinung nach einen Event Handler für onKeyPress programmieren, der auf die Retrurn-Taste lauscht.
Titel: Re:submit (Maske im Browser)
Beitrag von: Axel_Janssen am 18.06.03 - 15:15:47
Ich glaube dann wird aber auch ein
<input type="submit"> erzeugt.

wenn man mit @FileSave, @FileCloseWindow.

Vielleicht ist das ein Weg...

Versuche das mal und trage den Agenten, der in dem Click Event angesprochen wird, als WebQuerySave Agent ein. Da musst du natürlich im Agenten ein paar Sachen ändern, aber das kann ein Weg sein..

Titel: Re:submit (Maske im Browser)
Beitrag von: harkpabst_meliantrop am 18.06.03 - 16:14:42
Genau, es ist ein input type=button mit dem beliebten automatisch generierten _doClick im onClick-Event.