Domino 9 und frühere Versionen > Entwicklung
Javascript im Client: OnChange-Event und Feldanpassung
TMC:
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
--- Ende Code ---
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
}
}
--- Ende Code ---
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 :)
animate:
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.
animate:
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
animate:
und hier kannst du sehen, wie du mit Datümern in JS umgehen kannst:
http://de.selfhtml.org/javascript/objekte/date.htm
TMC:
Danke Thomas für die Tipps.
Schau ich mir an.
Matthias.
P.S. cooles Avatar
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln