代码之家  ›  专栏  ›  技术社区  ›  lte__

聚合铁表单-禁用提交?

  •  2
  • lte__  · 技术社区  · 6 年前

    我正在使用 iron-form 我正在努力 POST 将文件发送到(当前为本地)服务器。我有两个按钮,一个用于发送文件,另一个用于取消。我在取消时遇到问题。以下是表格:

    <form  is="iron-form" action="http://localhost:7733/receivedoc" id="restForm" method="post" >
      <table class="starter-inputs">
        <tr><td>
        <px-file-upload 
          id="uploadComponentId"
          message="Drag and drop files here, or click the button below." 
          multiple=false 
          accept=".xls,.xlsx">
        </px-file-upload>
        </td></tr>
        </table>
        <button class="btn btn--large btn--icon" id="saveDataSetButton">
          <i class="fa-briefcase">Generate Pacing File</i>
        </button>
        <button class="btn btn--large btn--icon" id="cancelDataSetButton">
          <i class="fa-briefcase">Cancel</i>
        </button>
        <div class="output"></div>
      </form>
    

    这个 cancelDataSetButton 被处理为:

    this.$.cancelDataSetButton.addEventListener('click', function() {
      console.log('restForm.cancelDataSetButton click')
      restForm.reset();
      restForm.querySelector('.output').innerHTML = 'Operation cancelled.';
    });
    

    然而,自 By default, a native element (or input type="submit") will submit this form. 这个 邮递 无论如何都会被激发。如何防止“取消”按钮 邮递 ing?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andrew Ymaz    6 年前

    这是个好问题。

    我想在这里强调几件事。。。

    首先,让我们刷新一些有关HTML规范的基础知识:

    (1) <button> 无属性 type 将作为 type=submit 作为默认属性,这就是为什么 两个按钮都将提交 表单。

    (2) <按钮(>); 正在支持 type="reset" 这会将所有字段重置为初始值(例如,清除它们),并且 不会提交表单 ,因此根本不需要JS处理程序代码。

    总之,我建议您对HTML代码进行一些调整,与按钮块相关:

    <button type="submit" class="btn btn--large btn--icon" id="saveDataSetButton">
        <i class="fa-briefcase">Generate Pacing File</i>
    </button>
    <button type="reset" class="btn btn--large btn--icon" id="cancelDataSetButton">
        <i class="fa-briefcase">Cancel</i>
    </button>
    

    请注意 cancelDataSetButton 不需要JS代码(清除该字段),您可以删除整个事件侦听器:

    this.$.cancelDataSetButton.addEventListener('click', function() { 就这么一个。

    一些需要补充的参考资料: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button