我正在编写的脚本有一个函数,它会创建一个日期框,并以默认值作为参数。如果用户输入的内容无法识别为日期,它会将文本设置回默认值。我想添加一个功能,当你在日期框中输入某些关键字时,它会触发它执行特定的操作。例如,如果用户输入“昨天”,它会将日期/时间设置为前一天的开始时间。
我不知道如何让函数检查这些关键词,以免文本因日期不正确而转换回默认值。有什么方法可以实现吗?
(使用 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);
));
*/
您可以创建下拉菜单/按钮来设置昨天的值,或者您可以使用文本编辑框并使用它构建自定义日历框/数字编辑框。