最初に、ボタンは作成時にすでに有効になっています ( 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
ます。問題を再現する次のコードを参照してください。最初の日付ボックスの値を変更する場合、最初のボタンが有効になります。2 番目の日付ボックスの値を変更する場合、2 番目のボタンは有効になりません。違いは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;
}