不确定如果我在这里遗漏了一些东西,但是当我使用'validateEmail'时,它需要电子邮件地址为小写。如果您在下面运行我的代码并输入您的姓名和大写字母的电子邮件地址,则不会提交。但是,如果删除所有大写值以降低它可以正常工作。有谁知道这是设计还是错误?
function doGet() {
// // Create the signup application
var app = UiApp.createApplication();
//Create vertical panel to hold the widgets
var panelMain = app.createVerticalPanel().setId('mainPanel');
var lblName = app.createLabel('Name:').setId('lblName').setWidth('80px')
.setStyleAttribute("fontFamily","Trebuchet MS")
.setStyleAttribute("fontSize","12pt");
var txtName = app.createTextBox().setName('txtName').setId('txtName').setWidth('300px')
.setStyleAttribute("background-color", "#ffbb00")
.setStyleAttribute("fontFamily", "Trebuchet MS")
.setStyleAttribute("fontSize", "12pt");
var lblEmail = app.createLabel('Email:').setId('lblEmail').setWidth('80px')
.setStyleAttribute("fontFamily","Trebuchet MS")
.setStyleAttribute("fontSize","12pt");
var txtEmail = app.createTextBox().setName('txtEmail').setId('txtEmail').setWidth('300px')
.setStyleAttribute("background-color", "#ffbb00")
.setStyleAttribute("fontFamily", "Trebuchet MS")
.setStyleAttribute("fontSize", "12pt");
var lblRequiredEmail = app.createLabel('*').setId('lblRequiredEmail');
var lblRequiredName = app.createLabel('*').setId('lblRequiredName');
var lblStatus = app.createLabel("Sign up to receive specials and promotions.").setId('lblStatus')
.setStyleAttribute("fontFamily","Trebuchet MS")
.setStyleAttribute("fontSize","12pt");
var btnSubmit = app.createButton("Submit").setId("btnSubmit").setWidth("120px")
.setStyleAttribute("fontFamily", "Trebuchet MS")
.setStyleAttribute("fontSize", "12pt")
var gridMain = app.createGrid(4, 3).setId('gridMain');
gridMain.setWidget(0,0,lblName)
.setWidget(0,1,txtName)
.setWidget(0, 2, lblRequiredName)
.setWidget(1, 0,lblEmail)
.setWidget(1, 1,txtEmail)
.setWidget(1,2,lblRequiredEmail)
.setWidget(2,1,btnSubmit);
panelMain.add(lblStatus).add(gridMain);
//Create server handler for when user submits the information
var serverHandler = app.createServerHandler('Signup')
.validateEmail(txtEmail)
.validateLength(txtName,1,500)
.addCallbackElement(panelMain);
var validateEmail = app.createClientHandler()
.validateNotEmail(txtEmail)
.forTargets(txtEmail).setStyleAttribute("color", "red")
.forTargets(lblRequiredEmail).setVisible(true)
.setText('Invalid Email')
.setStyleAttribute("color", "red");
var validateName = app.createClientHandler()
.validateNotLength(txtName,1,500)
.forTargets(txtName).setStyleAttribute("color", "red")
.forTargets(lblRequiredName).setVisible(true)
.setText('Please Enter Name')
.setStyleAttribute("color", "red");
btnSubmit.addClickHandler(serverHandler).addClickHandler(validateEmail).addClickHandler(validateName);
app.add(panelMain);
return app;
}
function Signup(thisForm)
{
var app = UiApp.getActiveApplication();
var txtName = thisForm.parameter.txtName;
var txtEmail = thisForm.parameter.txtEmail;
var lblStatus = thisForm.parameter.lblStatus;
//Other code to save to data store
////
app.getElementById("lblStatus").setText('Thanks for signing!');
app.getElementById('gridMain').setVisible(false);
return app;
// return app2; //Everything is working fine right now
}
答案 0 :(得分:0)
我认为validateEmail过去并没有这样做过。之前我曾在Is there a way to turn off Auto Fill for users when filling out a form?尝试过这个解决方案,而且我很确定它采取了大胆的案例。 @Serge可能记得。
据报道Issue 1799: validation functions in google apps script is not working properly已于2012年9月关闭,因为它过于宽泛。我认为这为报告这个具体问题打开了大门。
对于自己进行电子邮件验证并处理混合大小写的替代方案,请查看Email Validation上的此Apps脚本教程。