Autor Thema: Javascript im Client: OnChange-Event und Feldanpassung  (Gelesen 2952 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Ich habe hier eine ND6 - Datenbank, die R5 - kompatibel werden muss. (nicht Web)

Es gibt da 2 Datumsfelder:
 * DateFrom
 * DateTo

Beispiel für den Onchange-Event des "DateFrom" - Feldes:
Code
Sub Onchange(Source As Field)
   
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = uiws.CurrentDocument
   Set doc = uidoc.Document   
   
   If doc.DateFrom(0) > doc.DateTo(0) Then
      doc.DateTo = doc.DateFrom(0) + 1
   End If
   
End Sub

Wenn also das eingegebene Startdatum größer als das Enddatum ist, wird das Enddatum angepasst (Startdatum + 1 Tag).

Jetzt muss das auch in R5 gehen.
Da steht mir aber nur JavaScript im OnChange-Event zur Verfügung.

Im R5-Mailfile in der Kalendermaske passiert eigentlich ähnliches, da hab ich mal den Code rauskopiert:
Code
if (window.location.protocol.indexOf('Notes:')==-1)
   {

thisform = document.forms[0];
newstart = new Date(translateDate(thisform.StartDate.value));
newend = new Date(translateDate(thisform.EndDate.value));
   
//verify parsing
xxBadDateString = "This date (" + thisform.StartDate.value + ") is an invalid date.  Please re-enter Start Date."


if (newstart.toString() == "Invalid Date" || newstart.toString() == "NaN")
   {
   alert( xxBadDateString )
   thisform.StartDate.value = thisform.EndDate.value
   thisform.StartDate.focus()
   }
   
else if (newend.getTime() < newstart.getTime()) 
   {
   thisform.EndDate.value = thisform.StartDate.value
   } 
   }

Ich habe leider keine Ahnung was das Script alles macht. Da ist wohl auch eine Validierung drin.

Was mir aber Hoffnung macht ist der letzte Part, dort wird ja wohl sowas ähnliches gemacht wie ich in meinem LS habe.

Wie muss ich denn das JS anpassen für meine Situation?

Jeder Tipp ist willkommen  :)
« Letzte Änderung: 12.08.04 - 18:50:20 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #1 am: 12.08.04 - 20:23:27 »
die erste Zeile bedeutet schonmal, dass das ganze nur ausgeführt wird, wenn nicht gerade das notes-Protokoll verwendet wird.

was das jetzt genau bedeutet weiß ich nicht genau, hab bis jetzt sehr selten JS im Client verwendet.
Also auf jeden Fall heißt das, dass es im Web ausgeführt wird. Meine Befürchtung ist, dass es bedeutet, dass es nicht im Client ausgeführt wird. Kann aber auch ganz anders sein.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #2 am: 12.08.04 - 20:26:20 »
und dann wird überprüft, ob die beiden Datümer (ich weiß, ist falscher Plural) gültig sind.
Wenn nicht, gibts ne Warnung und StartDate wird auf EndDate gesetzt, wenn ja, dann genau andersrum, dann wird das EndDate aufs StartDate gesetzt, falls Ende < Start
« Letzte Änderung: 12.08.04 - 20:27:46 von Thomas Völk »
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #3 am: 12.08.04 - 20:31:13 »
und hier kannst du sehen, wie du mit Datümern in JS umgehen kannst:
http://de.selfhtml.org/javascript/objekte/date.htm
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #4 am: 12.08.04 - 20:34:15 »
Danke Thomas für die Tipps.
Schau ich mir an.

Matthias.

P.S. cooles Avatar
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #5 am: 12.08.04 - 20:40:08 »
im Prinzip würde ich es so machen:

ein Date Objekt erstellen mit dem Wert deines Felds(String)
das für alle Felder, mit denen du rechnen willst.
die Berechnungen und Änderungen durchführen.

Stringwerte zurückschreiben
den Stringwert eines jeden Objekts bekommst du mit der toString()-Methode
newstart.toString()

in ein Feld schreibst du so, wie im Beispiel gezeigt:

thisform = document.forms[0];
thisform.EndDate.value = "12.12.1912";
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #6 am: 12.08.04 - 21:11:24 »
Ich wollte es jetzt eigentlich ziemlich simpel halten am Anfang.

Code
thisform = document.forms[0];
mystartdate = new Date(translateDate(thisform.rDateFrom.value));
myenddate = new Date(translateDate(thisform.rDateTo.value));

if (mystartdate.getTime() > myenddate.getTime())
 {
thisform.rDateTo.value = thisform.rDateFrom.value
 }

(die Felder heißen rDateFrom/rDateTo).

Hier kommt auch schon die Fehlermeldung:
Zitat
A JavaScript Error was encountered.
Error: ReferenceError: translateDate is not defined

Zeile wird leider nicht angegeben.

Muss ich da noch irgendwas deklarieren?
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #7 am: 13.08.04 - 09:19:22 »
translateDate ist keine JS-Funktion. Das ist eine Funktion, die irgendwo in der DB steht (JS-Header?)
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Javascript im Client: OnChange-Event und Feldanpassung
« Antwort #8 am: 13.08.04 - 11:31:08 »
Danke Thomas, steht im JS-Header.

Lt. R5 Designerhelp ist der R5-OnChange-Event von Feldern "Browser only" - im R5.0.11 - Client kann ich aber auch Client einstellen.
Ich lass das glaub ich wieder, da die DB auch auf etwas älteren Clients funktionieren muss.
Im LDD-Forum wird auch immer wieder betont, dass OnChange-Event nur im Browser geht.
Schade eigentlich...
« Letzte Änderung: 13.08.04 - 11:31:44 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz