oninput和onchange事件的区别是什么

简介: oninput和onchange事件的区别是什么

`oninput` 和 `onchange` 是两种不同的事件,它们在处理用户输入时具有一些区别。

1. `oninput` 事件:

  - 触发时机:当用户输入框的值发生改变时立即触发,即时反馈用户的输入。

  - 适用元素:主要用于 `<input>`、`<textarea>` 和 `<select>` 等可输入内容的元素。

  - 触发条件:只要用户输入框的值发生改变,无论是键盘输入、粘贴、剪切、拖拽等方式,都会触发该事件。

  - 实时性:可以实时获取用户的输入,并对输入进行实时处理。

例如:使用 oninput 事件实时计算输入框的字符数:

 

<input type="text" oninput="countChars(this)">
<script>
  function countChars(input) {
    var count = input.value.length;
    console.log('已输入字符数:' + count);
  }
</script>

当用户在输入框中输入字符时,会实时计算输入框中已输入的字符数,并在控制台中输出。

2. `onchange` 事件:

  - 触发时机:当用户输入框的值发生改变并且失去焦点时触发。

  - 适用元素:同样适用于 `<input>`、`<textarea>` 和 `<select>` 等可输入内容的元素。

  - 触发条件:只有在输入框失去焦点时,且值发生改变时才会触发该事件。

  - 延迟性:需要等待用户输入完成并且离开输入框后,才能触发事件。

例如:使用 onchange 事件在提交表单前验证输入框的值:

 

<form onsubmit="return validateForm()">
  <input type="text" id="username">
  <button type="submit">提交</button>
</form>
<script>
  function validateForm() {
    var username = document.getElementById('username').value;
    if (username === '') {
      alert('用户名不能为空!');
      return false;
    }
    return true;
  }
</script>

当用户点击提交按钮时,会触发 onchange 事件,验证输入框中的值是否为空。如果为空,则弹出提示框并阻止表单提交;否则允许表单提交。

因此,主要区别在于触发时机和实时性。如果你需要实时获取用户的输入并及时做出反应,可以使用 `oninput` 事件。而如果你只关心用户最终的输入结果,可以使用 `onchange` 事件。在实际应用中,根据具体的需求选择适合的事件来处理用户输入是很重要的。

相关文章
|
数据采集 芯片
GWAS全基因组关联分析入门教程
GWAS全基因组关联分析入门教程
|
3月前
|
弹性计算 应用服务中间件
亲测:阿里云备案流程及操作步骤(图文教程)
阿里云备案共五步,最快2天成功。先提交材料至阿里云初审(1天内),通过后转交管局,用户完成工信部短信核验,最后等待管局审核(1-20天)。全程线上操作,简单高效。
684 3
|
网络协议 安全 数据安全/隐私保护
Socks5代理和HTTP代理的区别在哪里?
Socks5和HTTP代理是两种IP代理方式,分别基于Socks5及HTTP协议。Socks5支持TCP/UDP,适合P2P、游戏和流媒体,提供传输层身份验证。HTTP代理仅支持HTTP,适用于Web浏览控制和内容过滤。选择代理应根据实际需求,如需高速低延迟选Socks5,需访问控制选HTTP。
|
9月前
|
JavaScript 前端开发 算法
vue渲染页面的原理
vue渲染页面的原理
269 56
|
传感器 机器学习/深度学习 自动驾驶
未来出行新纪元:自动驾驶技术深度剖析
【10月更文挑战第6天】 本文旨在深入探讨自动驾驶技术的工作原理、关键技术要素、当前主要挑战以及未来发展趋势。通过对感知、决策和执行层的细致分析,结合行业现状与前瞻,为读者提供一个关于自动驾驶技术的全面视角,揭示其如何引领交通运输领域迈向智能化、安全化与高效化的新阶段。
287 1
|
12月前
|
JSON 前端开发 Java
【SpringMVC】基础入门实战(3)
SpringMVC获取Header,返回静态页面,返回数据(Controller),返回数据@ResponseBody,返回HTML代码片段,返回JSON,设置状态码,设置Header
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包(Closures)
深入理解JavaScript中的闭包(Closures)
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
245 0
|
前端开发
layui-form
`layui-form`是一个前端表单组件,提供多种表单类型如单行、多行排列的输入框,下拉选择框(支持模糊搜索),单选框和复选框。表单元素可通过`required`和`lay-verify`属性进行必填和验证设置。编辑器如`layedit`可用于富文本输入,表单监听事件如提交和单选器可绑定回调函数进行处理。此外,能动态更新渲染表单,初始化表单数据并进行数据校验,包括自定义验证规则。
472 1