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

embedded/2024/9/19 20:53:09/ 标签: javascript, 前端, 开发语言

 一、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.ppmy.cn/embedded/113921.html

相关文章

关于 Goroutines 和并发控制的 Golang 难题

下面是一道关于 Goroutines 和并发控制的 Golang 难题&#xff0c;它涉及到 Go 的并发编程模型、Goroutines、通道&#xff08;Channels&#xff09;以及 sync.WaitGroup 的使用&#xff1a; 问题描述&#xff1a; 你有一个需要并发执行的任务&#xff0c;其中有 100 个 URL …

基于Spring Boot的学生社区故障维修预约系统的设计与实现(开题报告)

毕业论文(设计)开题报告 基于Spring Boot的学生社区故障维修预约系统设计与实现 姓 名 学 院 数学与数据科学学院 专业班级 信息与计算科学202 学 号 202021314223 校内指导教师 职称/职务 副教授 校外指导教师 职称/职务 技术经理 起始时间 2023年9月 教务部制 一、开…

【LLM多模态】文生视频评测基准VBench

note VBench的16个维度自动化评估指标代码实践&#xff08;待完成&#xff09;16个维度的prompt举例人类偏好标注&#xff1a;计算VBench评估结果与人类偏好之间的相关性、用于DPO微调 文章目录 note一、相关背景二、VBench评测基准概述&#xff1a;论文如何解决这个问题&…

Go语言现代web开发13 方法和接口

方法 As you probably noticed, there are no classes in the Go programming language. But we can mimic this by declaring functions on types. The type which declares functions is called the receiver argument and the function declared on the type is called the…

JS基础之【对象详解 -- 对象的属性与方法、遍历对象与内置对象】

&#x1f680; 个人简介&#xff1a;某大型国企高级前端开发工程师&#xff0c;7年研发经验&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码…

WPF 的TreeView的TreeViewItem下动态生成TreeViewItem

树形结构仅部分需要动态生成TreeViewItem的可以参考本文。 xaml页面 <TreeView MinWidth"220" ><TreeViewItem Header"功能列表" ItemsSource"{Binding Functions}"><TreeViewItem.ItemTemplate><HierarchicalDataTempla…

【设计模式】UML类图和六大设计原则

前言 在实践中经常看到工厂模式、观察者模式等字眼&#xff0c;渐觉设计模式的重要性&#xff0c;于是开刷设计模式。 本文讲述了UML类图以及设计模式的六大原则 参考资料&#xff1a; 课程视频&#xff1a;黑马程序员Java设计模式 一、UML类图 1. 类和接口的表示方式 如…

JavaScript在数据可视化领域的探索与实践

目录 引言 JavaScript可视化库概览 D3.js基础入门 1. 引入D3.js 2. 绘制简单的条形图 3. 添加轴 交互性与动画 实际应用场景 结论 引言 在数据驱动决策日益重要的今天&#xff0c;数据可视化成为连接数据与洞察的桥梁。JavaScript&#xff0c;作为前端开发的主力军&am…

Python识别文字中的省市区

一、库安装 pip install cpca 注意&#xff1a;目前 cpca 模块仅支持Python3及以上版本。 二、基本使用 通过两行代码就能实现最基本的省市区提取&#xff1a; import cpcalocation_str ["新疆古阿贾克斯就打开房间啊开始","河北省石家庄市动物园",&…

CSP-J 计算机网络

文章目录 前言计算机网络的定义计算机网络的发展计算机网络的主要功能计算机网络的分类按网络地理范围分类按网络拓扑结构分类 OSI模型与TCP/IP模型OSI模型TCP/IP模型OSI模型与TCP/IP模型的网络协议及功能 IP地址域名1. **通用顶级域名&#xff08;gTLD&#xff0c;Generic Top…

掌握RESTful API设计:构建高效、可扩展的Web服务

设计RESTful API时&#xff0c;遵循最佳实践可以提高API的可维护性、可扩展性和用户体验。以下是一些关键的最佳实践&#xff1a; 使用HTTP方法正确&#xff1a;GET用于获取资源。POST用于创建新资源。PUT或PATCH用于更新现有资源。DELETE用于删除资源。无状态&#xff1a;每个…

iptables限制网速

1、使用hashlimit来限速 #从eth0网卡进入INPUT链数据&#xff0c;使用模块hashlimit 限制网速为100kb/s或2mb/s,超过限制的数据包会被DROP。OUTPUT链同理&#xff0c;mode为srcip&#xff0c;有4个mode选项: srcip&#xff08;默认匹配每个源地址IP&#xff0c;配置指定源地址…

如何使用命令安装android的.aab包

在Android设备上安装 .aab (Android App Bundle) 文件不是直接使用标准命令行工具的过程&#xff0c;通常需要通过Google Play或其他发布平台来安装它们。但是&#xff0c;如果你想在本地测试 .aab 文件&#xff0c;可以通过以下步骤进行操作&#xff1a; 方法 1&#xff1a;使…

【电脑组装】✈️从配置拼装到安装系统组装自己的台式电脑

目录 &#x1f378;前言 &#x1f37b;一、台式电脑基本组成 &#x1f37a;二、组装 &#x1f379;三、安装系统 &#x1f44b;四、系统设置 &#x1f440;五、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;上篇文章分享了在平时开发的时候遇到的一种项目整合情况&…

WebSocket 协议

原文地址&#xff1a;xupengboo WebSocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 在 WebSocket API 中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff0c;并进行双向数据传输。…

HTTP 协议的基本格式

HTTP协议("超文本传输协议")&#xff0c;是一个被广泛使用应用层协议&#xff0c;自1991年正式发布HTTP协议以来&#xff0c;HTTP协议就一直在更新&#xff0c;目前已经更新到3.0版本&#xff0c;但是目前主流的依旧是1.1版本&#xff0c;但依旧是一个最主流使用的应…

paddle 分类网络

1.PaddlePaddlle强化学习及PARL框架 参考1 参考2 CPU版本安装 2.1 2.x版本安装 首先在anaconda下创建虚拟环境&#xff1a;可参考【1】Anaconda安装超简洁教程&#xff0c;瞬间学会&#xff01; 飞桨安装链接【开始使用_飞桨-源于产业实践的开源深度学习平台】 2 安装 con…

Linux用户及用户组操作命令笔记

1.用户概念及作用 用户&#xff1a;指的是Linux操作系统中用于管理系统或者服务的人 Linux下一切皆文件&#xff0c;所以用户管理的是相应的文件 基本上分为两种&#xff1a; 基本管理&#xff1a;文件的创建、删除、复制、查找、打包压缩等&#xff1b;文件的权限增加、减…

PCIe扫盲(八)

系列文章目录 PCIe扫盲&#xff08;一&#xff09; PCIe扫盲&#xff08;二&#xff09; PCIe扫盲&#xff08;三&#xff09; PCIe扫盲&#xff08;四&#xff09; PCIe扫盲&#xff08;五&#xff09; PCIe扫盲&#xff08;六&#xff09; PCIe扫盲&#xff08;七&#xff09…

STM32 HAL freertos零基础(十一)中断管理

1、简介 在FreeRTOS中,中断管理是一个重要的方面,尤其是在嵌入式系统中。正确地处理中断可以确保系统的实时响应能力,并且能够在中断服务程序(ISR)中执行关键操作。FreeRTOS提供了一些机制来帮助开发者管理中断,并确保在多任务环境下中断处理的安全性和高效性。 任何中…