0

我真的很想对使用 Google Apps HtmlService 提供的一些简单表单使用本机 html5 验证。

<form><input type="text" pattern="[0-9]{6}" /><input type="submit" value="try it" /></form>

在 jsfiddle 中,表单按预期工作:不匹配六位数字的输入会导致特定于浏览器的验证提示。但是,使用 HtmlService 从 Google Apps 提供的代码完全相同:

function doGet() {
  return HtmlService.createHtmlOutput('<form><input type="text" pattern="[0-9]{6}" /><input type="submit" value="try it" /></form>');
}

导致表单正确显示,但没有对输入进行验证。可以在这里测试。我也尝试过使用脚本设置模式属性;这也失败了。

在每种情况下使用的浏览器都是相同的,jsfiddle 上的肯定结果证明浏览器正确支持模式属性。

任何帮助将不胜感激!

4

1 回答 1

2

你已经被 Caja'd 了。来自HTML 服务限制文档

为了保护用户免受恶意 HTML 或 JavaScript 的影响,Apps Script 依靠Caja 编译器对 HTML 服务 Web 应用程序或 Google 文档、表格和表单的自定义用户界面进行清理和沙箱处理。

当您查看 Web 应用程序的浏览器源代码时,Caja 编译器会将表单字段转换为:

<input type="text" data-caja-pattern="[0-9]{6}">

data-caja阻止浏览器检测模式的前缀。

根据此 SO 响应HTML5 支持已添加到 Caja,因此可能值得提交错误报告

于 2014-03-09T08:41:12.063 回答