javascript - 通过 JavaScript 将表单提交到后台正确的 Post 操作 URL

标签 javascript html forms form-submit onsubmit

我有以下表格:

<div id="another"><form action='/post' name='submitform' id="submitform" method='post' class='pure-form'>

  [...]

  <textarea columns="40" rows="4" name='entry[body]' id="statement">
  </textarea>

  <input type='submit' id="submitbutton" name="btnSubmit" value="save" class="pure-button pure-button-primary">

</form></div>

当用户单击submit按钮时,我希望首先通过脚本处理表单,该脚本将检查#statement的内容,然后执行Post请求对于背景中的表单。我更喜欢用 JavaScript(而不是 jQuery)来完成。

我尝试使用

 document.querySelector('#submitform').addEventListener('submit', function(e) {
   e.preventDefault();
   console.log('attempt');
   // so smth to submit the form in background - what?
 });

但它似乎没有“捕获”表单并且仍然提交...

我做错了什么?

更新 - html 中有一个拼写错误

最佳答案

正如我们在注释中推断的那样,代码可以工作,但提交处理程序是在 <form> 之前绑定(bind)的。已满载。

解决此问题的一种方法是将代码放入 DOMContentLoaded 的监听器中。事件。 Support for DOMContentLoaded 相当不错,只有 IE8 有问题(尽管它也不支持 addEventListener)。

document.addEventListener("DOMContentLoaded", function(event) {
    // ...
});

另一种方法是输入 <script>低于<form></form>标签。

还有内联 onsubmit=... ,但由于各种原因(主要是可维护性),内联 JavaScript 如今被认为是不好的做法。只有当您需要支持无法绑定(bind)事件的非常旧的浏览器时,您才应该真正使用它。

至于在“后台”提交表单您可以use AJAX 。有很多很棒的资源/教程。

关于javascript - 通过 JavaScript 将表单提交到后台正确的 Post 操作 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590015/

相关文章:

javascript - 防止变量在网页上被抓取

html - Scala 字符串集合——一种输出不带双引号的字符串的方法

javascript - 单击时动态更改列大小

html - firefox 与 chrome 中的粗体文本和双边框问题

jquery - 将第二个元素定位在 fieldcontain 表单元素下

json - 使用 symfony 形式编辑 json_array 字段

c# - 对象不是函数错误

javascript - 在连接期间保持双引号

javascript - API 数据显示在浏览器的控制台中,但不显示在网页上 - Vue.js

javascript - 具有动态路由的 Angular $http.get?