您不能在 Google 表单字段中输入代码,然后立即运行脚本函数。这样就无法检查另一个字段的验证了。只有在表单提交后才能回复回复,您才能检查这些值是什么。
如果您坚持使用单个 Google 表单,您可以编写一个脚本来监控提交并发送电子邮件或让他们知道他们预订了太多人(事后)。还可以编写一个脚本,为每个邀请创建一个单独的表单,该邀请已经将最大客人编程到下拉列表中。然后向每个邀请发送他们自己的表单 url。
另一种方法是使用 2 个 UI 服务中的一个来编写您自己的应用程序,该服务就像表单一样。在那里,您可以与用户输入和您想要的验证进行交互。UiApp 示例的开始...
var MAX = [];
MAX['123'] = [2];
MAX['456'] = [3];
function doGet() {
var app = UiApp.createApplication();
var panel = app.createVerticalPanel();
var code = app.createTextBox().setId('code').setName('code');
var guests = app.createTextBox().setId('guests').setName('guests');
var submit = app.createButton('SUBMIT').setId('submit').setEnabled(false);
var status = app.createLabel('', false).setId('status');
var handler = app.createServerHandler('checkGuests').addCallbackElement(panel);
guests.addValueChangeHandler(handler);
handler = app.createServerHandler('submit').addCallbackElement(panel);
submit.addClickHandler(handler);
panel.add(code).add(guests).add(submit).add(status);
app.add(panel);
return app;
}
function checkGuests(e) {
var app = UiApp.getActiveApplication();
var code = e.parameter.code;
var guests = e.parameter.guests;
if (code == '' || code == undefined) {
app.getElementById('submit').setEnabled(false)
app.getElementById('status').setText('Please enter your code.'); }
else if (parseInt(guests) <= MAX[code]) {
app.getElementById('submit').setEnabled(true);
app.getElementById('status').setText(''); }
else {
app.getElementById('submit').setEnabled(false)
app.getElementById('status').setText('Whoops, too many people!'); }
return app;
}
function submit(e) {
}