Note that there are some explanatory texts on larger screens.

plurals
  1. POForm Validation Before Submission
    text
    copied!<p>I can't get my form to validate before it is submitted to my spreadsheet. Once I click submit it does nothing...</p> <p>I also am not sure how to validate the Date to make sure it is in the correct format before submission. I have tried to setup the validation but before I can test it, i have to be able to submit and get validation results.</p> <p>What am I doing wrong? I have included the code below:</p> <pre><code> function doGet() { var app = UiApp.createApplication().setTitle('DHS: Kurzweil Calendar'); //Create a panel which holds all the form elelemnts var vrtMainPanel = app.createVerticalPanel().setId('vrtMainPanel'); //Create Spreadsheet Source var spSheet = SpreadsheetApp.openById('0Aur3owCpuUY-dFF0dVZXb3I1Yjlpbzg3SXFIaklEcUE'); var spTeacherList = spSheet.getSheetByName('TeacherList'); var spSubjectList = spSheet.getSheetByName('SubjectList'); var spPeriodList = spSheet.getSheetByName('PeriodList'); var spCountList = spSheet.getSheetByName('CountList'); //Create the form elements var hdlTeacherName = app.createServerHandler('getTeacherName').addCallbackElement(vrtMainPanel); var lbxTeacherName = app.createListBox().setId('lbxTeacherName').setName('lbxTeacherName').addChangeHandler(hdlTeacherName); var lstTeacherNames = spTeacherList.getRange(1,1,spTeacherList.getLastRow(),1).getValues(); lstTeacherNames.sort(); for (var l = 0; l &lt; lstTeacherNames.length; l++) { lbxTeacherName.addItem(lstTeacherNames[l],l); } var lblTeacherName = app.createLabel('Teacher Name:'); var txtTeacherName = app.createTextBox().setName('txtTeacherName').setId('txtTeacherName').setVisible(false); var lblExt = app.createLabel('Ext:'); var txtExt = app.createTextBox().setName('txtExt').setId('txtExt'); //Set DateBox to Tomorrow's Date var tomorrow =new Date(new Date(new Date().setHours(0,0,0,0)).setDate(new Date().getDate() + 1));// set hours, min, sec &amp; milliSec to 0 and day=day+1 //Logger.log(tomorrow); var lblDate = app.createLabel('Date of Test:'); var boxDate = app.createDateBox().setId('boxDate').setName('boxDate').setFormat(UiApp.DateTimeFormat.DATE_SHORT).setValue(tomorrow); var lbxSubject = app.createListBox().setId('lbxSubject').setName('lbxSubject'); var lstSubjects = spSubjectList.getRange(1,1,spSubjectList.getLastRow(),1).getValues(); lstSubjects.sort(); for (var l = 0; l &lt; lstSubjects.length; l++) { lbxSubject.addItem(lstSubjects[l]); } var lbxPeriod = app.createListBox().setId('lbxPeriod').setName('lbxPeriod'); var lstPeriods = spPeriodList.getRange(1,1,spPeriodList.getLastRow(),1).getValues(); lstPeriods.sort(); for (var l = 0; l &lt; lstPeriods.length; l++) { lbxPeriod.addItem(lstPeriods[l]); } var lblStudentNum = app.createLabel('Number of Students:'); var lbxStudentNum = app.createListBox().setId('lbxStudentNum').setName('lbxStudentNum'); var lstStudentNums = spCountList.getRange(1,1,spCountList.getLastRow(),1).getValues(); lstStudentNums.sort(); for (var l = 0; l &lt; lstStudentNums.length; l++) { lbxStudentNum.addItem(lstStudentNums[l]); } var txtSourceGrp = app.createTextBox().setName('txtSourceGrp').setVisible(false); var txtTypeGrp = app.createTextBox().setName('txtTypeGrp').setVisible(false); var txtElementsID = app.createTextBox().setName('txtElementsID').setText('Elements Test ID').setVisible(false); var txtQuiaLink = app.createTextBox().setName('txtQuiaLink').setText('Quia Test Link').setVisible(false); var txtQuiaPass = app.createTextBox().setName('txtQuiaPass').setText('Quia Test Passphrase').setVisible(false); //Create Source Radio Button Group var radHCopy = app.createRadioButton('group1', 'Hard-Copy').setFormValue('Hard-Copy').addClickHandler(app.createClientHandler().forTargets(txtSourceGrp).setText('Hard-Copy')); var radECopy = app.createRadioButton('group1', 'Electronic-Copy').setFormValue('Electronic-Copy').addClickHandler(app.createClientHandler().forTargets(txtSourceGrp).setText('Electronic-Copy')); //Create Type Radio Button Group var radTExam = app.createRadioButton('group2', 'Teacher-Made Exam').setFormValue('Teacher-Made Exam').addClickHandler(app.createClientHandler().forTargets(txtTypeGrp).setText('Teacher-Made Exam')); var radEExam = app.createRadioButton('group2', 'Elements Exam').setFormValue('Elements Exam').addClickHandler(app.createClientHandler().forTargets(txtTypeGrp).setText('Elements Exam')); var radQExam = app.createRadioButton('group2', 'Quia Exam').setFormValue('Quia Exam').addClickHandler(app.createClientHandler().forTargets(txtTypeGrp).setText('Quia Exam')); var btnValidate = app.createButton('Create Event'); //Client Handlers for textBoxes var showTxtElementHandler = app.createClientHandler().forTargets(txtElementsID).setVisible(true); var hideTxtElementHandler = app.createClientHandler().forTargets(txtElementsID).setVisible(false); radEExam.addClickHandler(showTxtElementHandler); radTExam.addClickHandler(hideTxtElementHandler); radQExam.addClickHandler(hideTxtElementHandler); var showTxtQuiaLinkHandler = app.createClientHandler().forTargets(txtQuiaLink).setVisible(true); var hideTxtQuiaLinkHandler = app.createClientHandler().forTargets(txtQuiaLink).setVisible(false); radQExam.addClickHandler(showTxtQuiaLinkHandler); radTExam.addClickHandler(hideTxtQuiaLinkHandler); radEExam.addClickHandler(hideTxtQuiaLinkHandler); var showTxtQuiaPassHandler = app.createClientHandler().forTargets(txtQuiaPass).setVisible(true); var hideTxtQuiaPassHandler = app.createClientHandler().forTargets(txtQuiaPass).setVisible(false); radQExam.addClickHandler(showTxtQuiaPassHandler); radTExam.addClickHandler(hideTxtQuiaPassHandler); radEExam.addClickHandler(hideTxtQuiaPassHandler); //Create validation handler var valSubmit = app.createServerClickHandler('valSubmit'); valSubmit.addCallbackElement(vrtMainPanel); //Add this handler to the button btnValidate.addClickHandler(valSubmit); //Add all the elemnts to the panel var formGrid = app.createGrid(12,3).setCellPadding(3); vrtMainPanel.add(formGrid); formGrid .setWidget(0,0,lbxTeacherName) .setWidget(0,1,txtExt) .setWidget(0,2,txtTeacherName) .setWidget(1,0,lbxPeriod) .setWidget(1,1,lbxSubject) .setWidget(2,0,lblDate) .setWidget(2,1,boxDate) .setWidget(3,0,lblStudentNum) .setWidget(3,1,lbxStudentNum) .setWidget(4,0,radHCopy) .setWidget(4,1,radECopy) .setWidget(5,0,radTExam) .setWidget(6,0,radEExam) .setWidget(6,1,txtElementsID) .setWidget(7,0,radQExam) .setWidget(7,1,txtQuiaLink) .setWidget(8,1,txtQuiaPass) .setWidget(9,0,txtSourceGrp) .setWidget(9,1,txtTypeGrp) .setWidget(10,0,btnValidate) //Add this panel to the application app.add(vrtMainPanel); //Return the application return app; } function valSubmit(e) { var flag = 0; var app = UiApp.getActiveApplication(); var Teacher = e.parameter.txtTeacherName; var Ext = e.parameter.txtExt; var Subject = e.parameter.lbxSubject; var Period = e.parameter.lbxPeriod; var Date = e.parameter.boxDate; var StudentNum = e.parameter.lbxStudentNum; var Source = e.parameter.txtSourceGrp; var Type = e.parameter.txtTypeGrp; var ElementsID = e.parameter.txtElementsID; var QuiaLink = e.parameter.txtQuiaLink; var QuiaPass = e.parameter.txtQuiaPass; if (Teacher == '' || Teacher == '-- Select Teacher --') { app.getElementById('vldTeacherName').setText('* Select Teacher').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (Ext == '') { app.getElementById('vldExt').setText('* Select Teacher Again').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (Subject == '' || Subject == '-- Select Subject --') { app.getElementById('vldSubject').setText('* Select Subject').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (Period == '' || Period == '-- Select Period --') { app.getElementById('vldPeriod').setText('* Select Period').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (Date == '' || Date == Utilities.formatDate(Date, 'EST', 'yyyy-mm-dd')) { app.getElementById('vldDate').setText('* Date must be entered as yyyy-mm-dd').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (StudentNum == '' || StudentNum == '-- Select # --') { app.getElementById('vldStudentNum').setText('* Select Student #').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (Source == '' || Source == false) { app.getElementById('vldSourceGrp').setText('* Select either Hard Copy or Electronic Copy').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (Type == '' || Type == false) { app.getElementById('vldTypeGrp').setText('* Select either Teacher-Made Exam, Elements Exam, or Quia Exam').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (ElementsID == '' &amp;&amp; Type == 'Elements Exam') { app.getElementById('vldElementsID').setText('* Enter Elements ID').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (QuiaLink == '' || QuiaPass == '' &amp;&amp; Type == 'Quia Exam') { app.getElementById('vldQuia').setText('* Enter Quia Link and/or Passphrase').setStyleAttribute("color", "#F00").setVisible(true); app.getElementById('lblNoSuccess').setStyleAttribute("color", "#F00").setVisible(true); flag = 1; } if (flag == 0) { app.getElementById('lblSuccess').setStyleAttribute("color", "#F00").setVisible(true); //Create handler which will execute 'createEvents(e)' on clicking the button var evtHandler = app.createServerClickHandler('createEvents'); var vrtMainPanel = app.getElementById(vrtMainPanel); evtHandler.addCallbackElement(vrtMainPanel); } } function valHandler(e) { var app = UiApp.createApplication().setTitle('DHS: Kurzweil Calendar'); //Create a panel which holds all the form elelemnts var vrtMainPanel = app.createVerticalPanel().setId('vrtMainPanel'); var lblSuccess = app.createLabel('Check your information below, if everything looks correct you may confirm your event...').setName('lblSuccess').setId('lblSuccess').setVisible(false); var lblNoSuccess = app.createLabel('There were issues with the creation of your event... click BACK, and make the following corrections:').setName('lblNoSuccess').setId('lblNoSuccess').setVisible(false); var vldTeacherName = app.createLabel().setId('vldTeacherName').setVisible(false); var vldExt = app.createLabel().setId('vldExt').setVisible(false); var vldDate = app.createLabel().setId('vldDate').setVisible(false); var vldSubject = app.createLabel().setId('vldSubject').setVisible(false); var vldPeriod = app.createLabel().setId('vldPeriod').setVisible(false); var vldStudentNum = app.createLabel().setId('vldStudentNum').setVisible(false); var vldSourceGrp = app.createLabel().setId('vldSourceGrp').setVisible(false); var vldTypeGrp = app.createLabel().setId('vldTypeGrp').setVisible(false); var vldElementsID = app.createLabel().setId('vldElementsID').setVisible(false); var vldQuia = app.createLabel().setId('vldQuia').setVisible(false); var btnCreate = app.createButton('Corfirm Event'); //Add this handler to the button var evtHandler = app.getElementById('evtHandler'); btnCreate.addClickHandler(evtHandler); //Add all the elemnts to the panel var formGrid = app.createGrid(13,3).setCellPadding(3); vrtMainPanel.add(formGrid); formGrid .setWidget(0,0,lblSuccess) .setWidget(1,0,lblNoSuccess) .setWidget(2,0,vldTeacherName) .setWidget(3,0,vldExt) .setWidget(4,0,vldDate) .setWidget(5,0,vldSubject) .setWidget(6,0,vldPeriod) .setWidget(7,0,vldStudentNum) .setWidget(8,0,vldSourceGrp) .setWidget(9,0,vldTypeGrp) .setWidget(10,0,vldElementsID) .setWidget(11,0,vldQuia) .setWidget(12,0,btnCreate) //Add this panel to the application app.add(vrtMainPanel); //Return the application return app; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload