【问题标题】:How to stop Onsubmit in Google forms如何在 Google 表单中停止 Onsubmit
【发布时间】:2013-06-21 09:04:39
【问题描述】:

在 Google 表单中,我编写了一个验证检查来检查一个字段,如果它超过计数,那么我需要停止表单提交并提醒用户注意错误。我可以将错误文本添加到 div 但无法停止表单提交。

如何停止表单提交。我已经尝试过 e.preventDefault() 但它没有用。任何人都可以帮忙。我附上了在谷歌表单中提交表单时调用的代码。

function onFormSubmit(e) {
  Logger.log("test log", "testing");
var timestamp = e.values[0];
var programname = e.values[1];
var center = e.values[2];
var fullname = e.values[3];
var board = e.values[4];
var programtype = e.values[5];
var programobjective = e.values[6];
var calltoaction = e.values[7];
var begindate = e.values[8];
var enddate = e.values[9];
var marketing = e.values[10];
var budget = e.values[11];
var expectedparticipation = e.values[12];
var registrationfee = e.values[13];
var announcement = e.values[14];
var insightannouncement = e.values[15];
var additionallanguage = e.values[16];
var checklist = e.values[17];
var speakerprofile = e.values[18];
var noticeboarditem = e.values[19];
var toAddress = e.values[20];
var programcategory = e.values[21];
var liability = e.values[22];
var datesofannouncement = e.values[23];
var explaination = e.values[24];
var additionalquestion = e.values[25];
var location = e.values[26];
var externalpartners = e.values[27];
var intergenerational = e.values[28];
var announcementlanguage = e.values[29];

 // var app = DocumentApp.getUi();

  var app = UiApp.getActiveApplication();

  Logger.log("test log in checkAnnouncement: " + announcement + " insight " + insightannouncement, "testing");
 // var announcement = e.values[14];
  //var insightannouncement = e.values[15]; 
  //var toAddress = e.values[20];
  //var htmlBody = "Thank you for your <b>Program Package</b> report submitted on <i>";
  //var subject = "test subject";
  Logger.log(announcement, "testing");
  Logger.log(insightannouncement, "testing");
 // Logger.log(toAddress, "testing");

  announcement = announcement.replace(/(^\s*)|(\s*$)/gi,"");
  announcement = announcement.replace(/[ ]{2,}/gi," ");
  announcement = announcement.replace(/\n /,"\n");

  insightannouncement = insightannouncement.replace(/(^\s*)|(\s*$)/gi,"");
  insightannouncement = insightannouncement.replace(/[ ]{2,}/gi," ");
  insightannouncement = insightannouncement.replace(/\n /,"\n");

  if(announcement.split(' ').length > 3)
  {
     app.getElementById('entry_15').setText("*Announcement should be less than 30 words").setStyleAttribute("color", "#F00");
     e.preventDefault(); 
  }
  else if(insightannouncement.split(' ').length > 5)
  {
    app.getElementById('entry_32').setText("*insightAnnouncement should be less than 50 words").setStyleAttribute("color", "#F00");
   e.preventDefault(); 
  }

}

【问题讨论】:

  • 您可以发布您编写的任何相关代码吗?
  • 我敢打赌,你错误地使用了e.preventDefault()

标签: javascript validation google-apps-script webforms google-forms


【解决方案1】:

假设上述答案是正确的,并且此事件在提交后触发,它们在技术上是正确的,您无法停止提交,但您可以从表单的集合中删除响应(如果我应该删除它)已经正确理解了 API 的那一部分。

【讨论】:

    【解决方案2】:

    Google 表单的数据验证仅限于提交后,例如当您的 onFormSubmission 触发器被调用时。在那个时间点,无法与表单 UI 进行交互。

    您的触发器函数接收到的事件是一个FormResponse 对象,它不包含preventDefault() 方法。

    参考文献

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 2019-08-15
      • 2020-01-03
      • 2013-09-13
      • 1970-01-01
      • 2021-07-18
      • 2018-10-05
      • 2020-02-11
      相关资源
      最近更新 更多