javascript - event.preventDefault 如何处理无法停止的事件处理程序?

标签 javascript web

我试图了解事件对象如何在 .preventDefault() 方法的上下文中工作。现在,例如,如果我在提交事件处理程序上使用 event.preventDefault,它将阻止我触发提交事件。因此,我尝试在提交按钮上使用 event.preventDefault() 的 onclick 事件处理程序,它也不允许我提交表单。从技术上讲,不允许用户单击按钮是不可能的。所以我想确定并知道 event.preventDefault 与事件处理程序到底做了什么。供引用的代码如下。这也让我想到一个问题,在表单中声明但未使用类型提交定义的按钮的自然行为是什么?

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Prevent default example</title>
    <style>
      div {
        margin-bottom: 10px;
      }
    </style>
  </head>
  <body>
    <form>
      <div>
        <label for="fname">First name: </label>
        <input id="fname" type="text">
      </div>
      <div>
        <label for="lname">Last name: </label>
        <input id="lname" type="text">
      </div>
      <div>
        <input id="submit" type="submit">
      </div>
    </form>
    <p></p>
    <script>
      var form = document.querySelector('form');
      var fname = document.getElementById('fname');
      var lname = document.getElementById('lname');
      var submit = document.getElementById('submit');
      var para = document.querySelector('p');
      form.onclick = function(e) {
        if(fname.value === '' || lname.value === '') {
          e.preventDefault();
          para.textContent = 'You need to fill in both names!'
        }
      }
    </script>
  </body>
</html>

最佳答案

event.preventDefault 函数阻止浏览器执行 native 行为。

对于提交按钮,它不会将数据提交到服务器并在此过程中重新加载页面,而是将数据处理留给您。

因此,如果您想使用 AJAX 提交表单数据,您可以定义处理数据的方式。

关于javascript - event.preventDefault 如何处理无法停止的事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47207486/

相关文章:

model-view-controller - Web 开发中 MVC 和 View First 方法之间的差异

根据服务器可用性将 HTML 重定向到不同的 URL

python - 使用 Python 的请求登录网站

javascript - 如何获取mysql.user密码的值

javascript - 将 Flash 对象与另一个 div 并排放置

javascript - ng-repeat 是否支持自身递归?

javascript - 使用 JQuery 验证程序扩展时禁用错误消息

javascript - 将 JavaScript 添加到 w2ui 面板

javascript - 了解如何使用 jQuery 插件 RhinoSlider

javascript - jQuery 可扩展 DIV 框