更改值时启用按钮 - 越野车

时间:2012-09-08 11:40:04

标签: gwt google-apps-script

当更改日期框的值时,应启用下面的按钮。为什么不起作用?

var sbutton = app.createButton('Set Alert').setId('sbutton').setPixelSize(250,    25).setEnabled(true);

// Button to be enabled only after date is set
var buttonenabler = app.createClientHandler().forTargets(sbutton).setEnabled(true);
eventdt.addValueChangeHandler(buttonenabler);

检查此处的代码https://script.google.com/d/1H6DLb8L6Qd3g55Dzn_A7ed61QvM_OcrLINDfya1i1h7JAyV_jLH7nmcq/edit

1 个答案:

答案 0 :(得分:1)

最初,在创建过程中,您的按钮已经启用(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对象时,会出现此问题。请参阅以下代码重现该问题。如果要更改第1个日期框中的值,则启用第1个按钮。如果要更改第二个日期框的值,则不启用第二个按钮。差异仅在setFormat电话中。 bug已提交给问题跟踪器,作为解决方法,您可以在代码中对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;
}