最初,在创建过程中,您的按钮已启用 ( var sbutton = app.createButton('Set Alert')....setEnabled(true);
),即即使执行了处理程序,按钮仍将保持启用状态。下面是一个简单的演示,展示了如何在日期框控件值更改时启用禁用按钮。
function doGet(e) {
var app = UiApp.createApplication();
var date = app.createDateBox();
var btn = app.createButton('Test').setEnabled(false);
var handler = app.createClientHandler().forTargets(btn).setEnabled(true);
date.addValueChangeHandler(handler);
app.add(date);
app.add(btn);
return app;
}
更新:我查看了您的代码。似乎这是GAS中的一个错误。将setFormat
函数调用添加到DateBox
对象时会出现问题。请参阅以下重现该问题的代码。如果要更改第一个日期框中的值,则启用第一个按钮。如果要更改第二个日期框的值,则不启用第二个按钮。区别仅在于setFormat
通话。将错误提交给问题跟踪器,作为一种解决方法,您可以setFormat
在代码中评论调用。
function doGet(e) {
var app = UiApp.createApplication();
var date = app.createDateBox();
var dateBug = app.createDateBox().setFormat(UiApp.DateTimeFormat.DATE_TIME_MEDIUM);
var btn = app.createButton('Test').setEnabled(false);
var btnBug = app.createButton('Test Bug').setEnabled(false);
var handler = app.createClientHandler().forTargets(btn).setEnabled(true);
var handlerBug = app.createClientHandler().forTargets(btnBug).setEnabled(true);
date.addValueChangeHandler(handler);
dateBug.addValueChangeHandler(handlerBug);
app.add(date);
app.add(btn);
app.add(dateBug);
app.add(btnBug);
return app;
}