我正在編寫的腳本具有此功能,它會建立一個以預設值作為參數的日期框,如果使用者輸入的內容無法識別為日期,它會將文字設定回該預設值。我想添加一個功能,如果你在日期框中輸入某些關鍵字,它將觸發它執行某些行為。例如,如果使用者輸入“昨天”,它會將日期/時間設定為前一天的開始。
我不知道如何讓函數檢查這些關鍵字,然後再將文字轉換回預設值(因為日期不正確)。關於如何實現這一點有什麼指示嗎?
(使用 JMP 17,但理想情況下它也適用於較新的版本)
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 ) )
);
因為它是數字編輯框,所以它「只能」接受數字。從非常簡單的事情開始,並以不同的方式進行測試(如果輸入文本,最終會得到缺失的值)
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);
));
*/
您可以建立下拉式選單/按鈕來設定昨天的值,或者您可以使用文字編輯框並使用它來建立自訂日曆框/數位編輯框。