次のコードは、ボタンがクリックされたときに、テキストボックスにある true/false の逆をテキストボックスに書き込む必要がありますが、正しく機能しません。ある方法では正しく動作しますが、他の方法では正しく動作しません (動作するのは最後に定義された ClickHandler です)。私もvalidateNotMatchesを使ってみましたが、喜びはありません。
テキストボックスの代わりにラベルのテキストが更新されるようにコードを変更すると、問題なく動作します。
2 つのボタンを使用するなどの提案された回避策は認識していますが、何か間違っているのか、それとも GAS のバグのように見えるのかを知りたいだけです。ありがとう。
function doGet(e)
{
var app = UiApp.createApplication();
var tb = app.createTextBox().setText('true');
var button = app.createButton('button');
var label = app.createLabel().setText('-');
button.addClickHandler(app.createClientHandler()
.validateMatches(tb, 'true')
//.forTargets(label).setText('false')
.forTargets(tb).setText('false')
);
button.addClickHandler(app.createClientHandler()
.validateMatches(tb, 'false')
//.forTargets(label).setText('true')
.forTargets(tb).setText('true')
);
return app.add(app.createHorizontalPanel().add(tb).add(button).add(label));
}