-1

当单击按钮时,以下代码应将在文本框中找到的真/假的倒数写回文本框 - 但它不能正常工作。它将以一种方式正常工作,但不能以另一种方式正常工作(工作的方式是最后定义的 ClickHandler)。我也尝试过使用 validateNotMatches,但没有任何乐趣。

如果我更改代码以便更新标签的文本而不是文本框的文本,那么效果很好。

我知道建议的解决方法,例如使用两个按钮,但我只想知道我做错了什么,或者这看起来像 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));
}
4

1 回答 1

2

这不是错误......两个事件都会触发。验证发生在小部件的当前状态,而不是触发事件时的状态,因此在您将其翻转为“false”后,第二个处理程序将验证并将其翻转回“true”。

于 2012-12-20T23:48:34.133 回答