Das Skript, an dem ich arbeite, verfügt über eine Funktion, die eine Datumsbox mit einem Standardwert als Argument erstellt. Wenn der Benutzer etwas eingibt, das nicht als Datum erkannt werden kann, wird der Text auf diesen Standardwert zurückgesetzt. Ich möchte eine Funktion hinzufügen, die beim Eingeben bestimmter Schlüsselwörter in die Datumsbox ein bestimmtes Verhalten auslöst. Wenn der Benutzer beispielsweise „gestern“ eingibt, wird Datum/Uhrzeit auf den Beginn des Vortages gesetzt.
Ich weiß nicht, wie ich die Funktion dazu bringen kann, diese Schlüsselwörter zu prüfen, bevor sie den Text wieder auf den Standardwert zurücksetzt, da es sich nicht um ein korrektes Datum handelt. Gibt es Hinweise dazu?
(mit JMP 17, aber idealerweise würde es auch mit den neueren Versionen funktionieren)
timeBox = Function( {time},
Eval(
Substitute(
NameExpr( NumberEditBox(
time,
10, //width
<< SetFunction( Function( {self}, {},
If( IsMissing(self << get), self << Set(Eval(dummy)) );
) ),
<< Set Format( Format( "m/d/y h:m:s", 23, 0 ) );
) ),
Expr( dummy ),
time
)
);
);
timeEntryWindow = NewWindow( << Modal,
PanelBox( "Start Time", startTimeBox = timeBox( Today() - 12*60*60 ) )
);
Da es sich um ein NUMBER -Eingabefeld handelt, akzeptiert es nur Zahlen. Beginnen Sie mit etwas ganz Einfachem und testen Sie es auf verschiedene Arten (bei Texteingaben werden Ihnen möglicherweise Werte fehlen).
Names Default To Here(1);
nw = new window("",
neb = Number Edit Box(.)
);
neb << Set Function(function({this},
show(this << get)
));
/*
neb << Set Number Changed(function({this, val},
show(this << get);
show(val);
));
*/
Sie könnten ein Dropdown-Menü/eine Schaltfläche erstellen, um den Wert von gestern festzulegen, ODER Sie könnten ein Textbearbeitungsfeld verwenden und damit ein benutzerdefiniertes Kalenderfeld/Zahlenbearbeitungsfeld erstellen.