表单输入未能提交时,在一个div(Form input fails to submit when i

2019-10-20 08:59发布

我复制了开发人员的代码示例成功。 当我将div到窗体失败。 我如何提交“表单输入的div”到服务器端的功能?
*我认为的div和跨越允许内部形式从这里。
*在取消的div导致格“产出”不更新。

HTML:

  <form id="myForm">
    <!--><div>-->
        <input name="myEmail" type="text" />
        <input type="submit" value="Submit"
          onclick="google.script.run.withSuccessHandler(updateEmail)
                    .processForm(this.parentNode)" />
     <!--></div>-->
  </form>
<div id="output">
</div>

<script>
  function updateEmail(response) {
    var div = document.getElementById("output");
    div.innerHTML = "<p>" + response + "</p>";
  }
</script>

code.gs

 function doGet() {
var html = HtmlService.createTemplateFromFile('index').evaluate()
.setTitle('Web App').setSandboxMode(HtmlService
.SandboxMode.NATIVE);
return html;
}

function processForm(formObject) {
  var response = "";
  response = formObject.myEmail;
  return response;
};

编辑:更改:

<input type="button" value="Submit"

至:

<input type="submit" value="Submit"

Answer 1:

我改变了HTML文件,以这样的:

<form id="myForm">
  <div>
    <input name="myEmail" type="text" />
    <input type="button" value="Submit"
          onclick="processFormJs(this.parentNode)" />
  </div>
</form>

<div id="output"></div>

<script>
window.processFormJs = function(argDivParent) {
  console.log('argDivParent: ' + argDivParent);

  google.script.run.withSuccessHandler(updateEmail)
    .processForm(argDivParent)
};

  function updateEmail(response) {
    var div = document.getElementById("output");
    div.innerHTML = "<p>" + response + "</p>";
  }
</script>

并增加了一个console.log('argDivParent: ' + argDivParent); 声明。 然后,在开发人员工具,显示控制台。 我得到这个错误:

argDivParent: [domado object HTMLDivElement DIV] 
Failed due to illegal value in property: 0 

this.ParentNode是指DIV,而不是形式。 如果我参加了DIV,返回的对象是:

argDivParent: [domado object HTMLFormElement FORM]

不:

argDivParent: [domado object HTMLDivElement DIV]

一个DIV可能不会自动把输入值到它的父对象。

此代码确实有一个DIV工作:

<form id="myForm" onsubmit="processFormJs(this)">

  <div>
    <input name="myEmail" type="text" />
    <input type="button" value="Submit"/>
  </div>

</form>

<div id="output"></div>

<script>
window.processFormJs = function(argDivParent) {
  console.log('argDivParent: ' + argDivParent);

  google.script.run.withSuccessHandler(updateEmail)
    .processForm(argDivParent)
};

  function updateEmail(response) {
    var div = document.getElementById("output");
    div.innerHTML = "<p>" + response + "</p>";
  }
</script>

为了调试,你可以使用Logger.log("your text here"); 然后查看日志。

function processForm(formObject) {
  Logger.log('processForm ran: ' + formObject);
  var response = "";
  response = formObject.myEmail;
  Logger.log('response: ' + response);
  return response;
};


文章来源: Form input fails to submit when in a div