我是编写脚本的新手。我正在使用谷歌Ui应用程序,如果输入的日期无效,我试图获取一个触发DateBox的处理程序,这样就会出现一条消息,但我无法让它工作。 这是我的代码的一部分:
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;
}
即使我只在日期框中放入文本,处理程序似乎也不会触发。
答案 0 :(得分:0)
从未调用函数DateVailidation(e)
似乎是合乎逻辑的,因为您对日期窗口小部件进行了验证,以防止在日期无效时触发(这就是您在日期窗口小部件中获取红色的方式)告诉你日期无效。
你真的希望发生什么?为什么客户验证不够充分?
如果你真的想要触发服务器验证,那么here is a test code会执行并显示结果,以帮助您查看会发生什么。(单击标签以触发处理程序)
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;
}