Grid 仅当网格中的所有值均为int时,谷歌应用程序脚本ui启用按钮

Grid 仅当网格中的所有值均为int时,谷歌应用程序脚本ui启用按钮,grid,google-apps-script,client-side-validation,google-sites,Grid,Google Apps Script,Client Side Validation,Google Sites,我有一个使用UI服务(而不是HTML服务)编写的GoogleApps脚本应用程序,该应用程序嵌入到Google站点中 我有一个由15个值(3x5)组成的网格。我能够使用clientHandler验证每个文本框中的值是否为整数 我想确保在启用Submit按钮之前正确设置了所有15个值 最好的方法是什么 显然,只需切换button.setEnabled属性onChange是不好的,就好像一个小部件禁用了按钮,但下一个是有效的整数,它将重新启用按钮 我曾考虑过使用服务器处理程序,但认为这可能会很慢而且

我有一个使用UI服务(而不是HTML服务)编写的GoogleApps脚本应用程序,该应用程序嵌入到Google站点中

我有一个由15个值(3x5)组成的网格。我能够使用clientHandler验证每个文本框中的值是否为整数

我想确保在启用Submit按钮之前正确设置了所有15个值

最好的方法是什么

显然,只需切换button.setEnabled属性onChange是不好的,就好像一个小部件禁用了按钮,但下一个是有效的整数,它将重新启用按钮

我曾考虑过使用服务器处理程序,但认为这可能会很慢而且不可靠。如果可以的话,我想把它保留在客户端。我觉得这应该是可能的,但我就是想不出来。我错过了什么


欢迎所有建议。谢谢。

一旦所有字段都是整数,这将启用submit,但需要向其中添加更多内容,以处理值在首次通过验证后可能变回非整数的情况

function doGet() {
  var app = UiApp.createApplication();
  var field1 = app.createTextBox();
  var field2 = app.createTextBox();
  var field3 = app.createTextBox();
  var submit = app.createButton('SUBMIT').setEnabled(false);

  var handler = app.createClientHandler().validateInteger(field1)
  .validateInteger(field2).validateInteger(field3)
  .forTargets(submit).setEnabled(true);

  field1.addValueChangeHandler(handler);
  field2.addValueChangeHandler(handler);
  field3.addValueChangeHandler(handler);

  app.add(field1).add(field2).add(field3).add(submit);
  return app;
}


UiApp帖子在这方面很有帮助。

您介意发布您已经编写的doGet函数代码吗?这将节省我们编写测试代码的精力。。。