Google apps script Google脚本:使用setFireEventsForInvalid和DateBox
我对写剧本是完全陌生的。我正在使用谷歌Ui应用程序,如果输入了无效的日期,我会尝试为日期框启动一个处理程序,这样会出现一条消息,但我无法让它工作。 这是我代码的一部分:Google apps script Google脚本:使用setFireEventsForInvalid和DateBox,google-apps-script,google-apps,Google Apps Script,Google Apps,我对写剧本是完全陌生的。我正在使用谷歌Ui应用程序,如果输入了无效的日期,我会尝试为日期框启动一个处理程序,这样会出现一条消息,但我无法让它工作。 这是我代码的一部分: var grd = app.getElementById('GRDprojDates'); grd.setWidget(0, 0, app.createLabel('Project Start Date').setStyleAttributes(styleLabel2)); grd.setWidget(1, 0, app.cre
var grd = app.getElementById('GRDprojDates');
grd.setWidget(0, 0, app.createLabel('Project Start Date').setStyleAttributes(styleLabel2));
grd.setWidget(1, 0, app.createLabel('Project End Date').setStyleAttributes(styleLabel2));
grd.setWidget(0, 1, app.createDateBox().setId('DateProjStart')
.setName('DateProjStart')
.setStyleAttributes(styleTBox3)
.setFormat(UiApp.DateTimeFormat.YEAR_MONTH_ABBR_DAY));
grd.setWidget(1, 1, app.createDateBox().setId('DateProjEnd')
.setName('DateProjEnd')
.setStyleAttributes(styleTBox3)
.setFormat(UiApp.DateTimeFormat.YEAR_MONTH_ABBR_DAY));
var hndDateValid = app.createServerHandler('DateVailidation').addCallbackElement(app.getElementById('DateProjStart'))
.addCallbackElement(app.getElementById('DateProjEnd'))
app.getElementById('DateProjStart').setFireEventsForInvalid(true).addValueChangeHandler(hndDateValid);
app.getElementById('DateProjEnd').setFireEventsForInvalid(true).addValueChangeHandler(hndDateValid);
处理程序调用的函数与此类似
function DateVailidation(e)
{
var app = UiApp.getActiveApplication();
var dateStart = e.parameter.DateProjStart;
var dateEnd = e.parameter.DateProjEnd;
if (dateStart == null)
{app.add(app.createLabel("Enter Valid Date"));}
return app;
}
即使我只在日期框中输入文本,处理程序似乎也不会启动 函数
DateVailidation(e)
从未被调用似乎是合乎逻辑的,因为您对日期小部件进行了验证,以防止在日期无效时触发(这就是为什么您在日期小部件中获得红色来告诉您日期无效)
你到底希望发生什么?为什么客户验证不够
如果确实要触发服务器验证,则会执行并显示结果,以帮助您查看发生了什么。(单击标签以触发处理程序)
function doGet() {
var app = UiApp.createApplication();
var grd = app.createGrid(2,2)
grd.setWidget(0, 0, app.createLabel('Project Start Date'));
grd.setWidget(1, 0, app.createLabel('Project End Date'));
var start = app.createDateBox().setId('DateProjStart').setName('DateProjStart').setFormat(UiApp.DateTimeFormat.YEAR_MONTH_ABBR_DAY);
var end = app.createDateBox().setId('DateProjEnd').setName('DateProjEnd').setFormat(UiApp.DateTimeFormat.YEAR_MONTH_ABBR_DAY);
grd.setWidget(0, 1, start)
grd.setWidget(1, 1, end)
var hndDateValid = app.createServerHandler('DateValidation').addCallbackElement(grd);
var mainHandler = app.createServerHandler('DateValidation').addCallbackElement(grd);
grd.addClickHandler(mainHandler);
start.setFireEventsForInvalid(true).addValueChangeHandler(hndDateValid);
end.setFireEventsForInvalid(true).addValueChangeHandler(hndDateValid);
app.add(grd);
return app;
}
function DateValidation(e){
var app = UiApp.getActiveApplication();
var dateStart = e.parameter.DateProjStart;
var dateEnd = e.parameter.DateProjEnd;
app.add(app.createLabel("Enter Valid Date ("+e.parameter.DateProjStart+') ('+e.parameter.DateProjEnd+')'));
return app;
}