当前位置: 首页 > article >正文

三、(JS)JS中常见的表单事件

 一、onfocus、onblur事件

这个很容易理解,就不解释啦。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <input type="text">

  <script>

    var inputEl = document.querySelector("input")

    // 1. 获取焦点和失去焦点.
    inputEl.onfocus = function () {
      console.log("input获取到了焦点");
    }

    inputEl.onblur = function () {
      console.log("input失去了焦点");
    }


  </script>

</body>

</html>

二、oninput、onchange事件

(1)输入的过程是input事件,内容确定发生改变(离开)是change事件

我们先来个案例看下各自是什么表现。我们先来个输入框,在输入框里面输入内容是什么反应。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <input type="text">

  <script>

    var inputEl = document.querySelector("input")

    // 1. 获取焦点和失去焦点.
    // inputEl.onfocus = function () {
    //   console.log("input获取到了焦点");
    // }

    // inputEl.onblur = function () {
    //   console.log("input失去了焦点");
    // }

    // 2. 内容发生改变/输入内容
    inputEl.oninput = function () {
      console.log("input事件正在输入内容", inputEl.value);
    }

    inputEl.onchange = function () {
      console.log("change事件内容发生了改变", inputEl.value);
    }

  </script>

</body>

</html>

表现:我们一直输入a,页面输出结果如下。input事件随着我们输入内容(没有失去焦点),每次都会触发一次事件。但是不会触发onchange事件。

这个时候,我们输入完内容后从输入框中失去焦点看下。

表现:这个时候触发了onchange事件,所以oninput事件和onchange事件之间的区别是否很明显?

得出结论:输入的过程是input事件,内容确定发生改变(离开)是change事件

三、onreset、 onsubmit事件

(1)重置的事件是发生在form身上的。

举个例,我写一个form表单,里面有2个输入框一个是input输入框,一个是textarea,并且有2个按钮一个是重置按钮,一个是提交按钮。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <!-- <input type="text"> -->

  <form action="">
    <input type="text">

    <textarea name="" id=""></textarea>
    
    <button type="reset">重置</button>
    <button type="submit">提交</button>
  </form>

  <script>

    var inputEl = document.querySelector("input")

    // 1. 获取焦点和失去焦点.
    // inputEl.onfocus = function () {
    //   console.log("input获取到了焦点");
    // }

    // inputEl.onblur = function () {
    //   console.log("input失去了焦点");
    // }

    // 2. 内容发生改变/输入内容
    // 输入的过程是input事件,
    // 内容确定发生改变(离开)是change事件
    // inputEl.oninput = function () {
    //   console.log("input事件正在输入内容", inputEl.value);
    // }

    // inputEl.onchange = function () {
    //   console.log("change事件内容发生了改变", inputEl.value);
    // }

  </script>

</body>

</html>

此时我在页面上2个输入框里分别输入一些内容


然后点击重置看下变化。

得出结论:里面button重置按钮,重置的事件是发生在form身上的。

所以我们想要监听重置事件,得监听form元素。        

(2)onreset事件

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <!-- <input type="text"> -->

  <form action="/abc">
    <input type="text">

    <textarea name="" id=""></textarea>

    <button type="reset">重置</button>
    <button type="submit">提交</button>
  </form>

  <script>

    var inputEl = document.querySelector("input")

    // 1. 获取焦点和失去焦点.
    // inputEl.onfocus = function () {
    //   console.log("input获取到了焦点");
    // }

    // inputEl.onblur = function () {
    //   console.log("input失去了焦点");
    // }

    // 2. 内容发生改变/输入内容
    // 输入的过程是input事件,
    // 内容确定发生改变(离开)是change事件
    // inputEl.oninput = function () {
    //   console.log("input事件正在输入内容", inputEl.value);
    // }

    // inputEl.onchange = function () {
    //   console.log("change事件内容发生了改变", inputEl.value);
    // }

    // 3. 监听重置和提交
    var formEl = document.querySelector("form")
    formEl.onreset = function (event) {
      console.log("发生了重置事件");

      // 阻止默认行为
      event.preventDefault()

    }

  </script>

</body>

</html>

(3)onsubmit事件

通常开发中,我们需要阻止默认提交,手动来提交(axios库提交,后续会讲)。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <!-- <input type="text"> -->

  <form action="/abc">
    <input type="text">

    <textarea name="" id=""></textarea>

    <button type="reset">重置</button>
    <button type="submit">提交</button>
  </form>

  <script>

    var inputEl = document.querySelector("input")

    // 1. 获取焦点和失去焦点.
    // inputEl.onfocus = function () {
    //   console.log("input获取到了焦点");
    // }

    // inputEl.onblur = function () {
    //   console.log("input失去了焦点");
    // }

    // 2. 内容发生改变/输入内容
    // 输入的过程是input事件,
    // 内容确定发生改变(离开)是change事件
    // inputEl.oninput = function () {
    //   console.log("input事件正在输入内容", inputEl.value);
    // }

    // inputEl.onchange = function () {
    //   console.log("change事件内容发生了改变", inputEl.value);
    // }

    // 3. 监听重置和提交
    var formEl = document.querySelector("form")
    formEl.onreset = function (event) {
      console.log("发生了重置事件");

      // 阻止默认行为
      event.preventDefault()

    }


    formEl.onsubmit = function () {
      console.log("发生了提交时间");
      // axios库提交
      event.preventDefault()
    }

  </script>

</body>

</html>


http://www.kler.cn/news/309719.html

相关文章:

  • Nodejs+vue+Express游戏分享网站的设计与实现 7a2s2
  • linux 中gitee配置
  • 如何进行DAP-seq的数据挖掘,筛选验证位点
  • 【网络安全】-rce漏洞-pikachu
  • P2P应用
  • 禹神3小时快速上手typescript
  • 区块链审计 如何测试solidity的bool值占用几个字节
  • WSL中使用AMBER GPU串行版
  • 【数据仓库】数据仓库常见的数据模型——范式模型
  • LeetCode 2332.坐上公交的最晚时间 (双指针 + 贪心)
  • kubernetes架构
  • 上调铁矿石产量预期后,淡水河谷股价能否重振?
  • MUNIK谈ASPICE系列专题分享(九)ASPICE对项目需求管理的实践分享
  • 2.Springboot之ApplicationContextListenerConfig
  • 【四范式】浅谈NLP发展的四个范式
  • 怀揣热爱 躬耕不惫 ——记新宁县金石镇水头学校朱文文老师
  • 雷池waf:三步轻松卸载指南
  • Redis - 集群篇 - 集群模式
  • 系统安全设计规范(Word完整版)
  • 如何用麦肯锡方法分析问题和解决问题?
  • navicate连接oracle数据库probable oracle net admin error
  • C++:内部类,匿名对象,操作符new与delete
  • uniapp 做一个查看图片的组件,图片可缩放移动
  • python中Web API 框架
  • Html css样式总结
  • 使用CUBE_MX实现STM32 DMA 功能(存储器到存储器)
  • Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发
  • 字幕编辑用什么软件好?盘点国内外7款视频加字幕软件,简单高效!
  • [SWPU2019]Web11
  • Java文件输入输出及其常用类