原生JS实时监听input框输入值的方法对比

作者:闭包旅人时间:2026-10-26 09:10:12浏览:215

本文详解原生JavaScript中实时监听input输入值的三种方式:onchange、onpropertychange和oninput。重点分析onchange需失去焦点且由用户操作触发,onpropertychange为IE专属且全属性变更触发,以及oninput作为非IE兼容方案仅响应value变化的特性,并提供HTML与JS代码示例。

原生JS实时监听input框输入值

在原生JavaScript中,实现实时监听input框输入值主要涉及oninput、onpropertychange和onchange这三个事件。

以下是oninput、onpropertychange以及onchange的具体用法解析。

1)onchange事件触发必须同时满足两个条件:

  • a)当前对象的属性发生变化,且该变化是由键盘输入或鼠标操作引发的(通过脚本修改属性不会触发);
  • b)当前对象失去焦点(触发onblur);

2)onpropertychange事件会在当前对象属性发生任何改变时立即触发,但该事件仅适用于Internet Explorer浏览器;

3)oninput是onpropertychange在非IE浏览器(如Firefox、Opera等)中的对应实现。其不同之处在于,它并非响应对象所有属性的变化,而仅在对象的value值发生改变时才生效。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        请输入字符:<input type="text" id='d0'/>
        <hr />
        你是输入的字符为: <div id='d1'></div>
        
        <script>
            var input = document.getElementById('d0')
            
            var div = document.getElementById('d1');
            input.oninput = function(){
                div.innerHTML = input.value;
            }
 
        </script>
    </body>
</html>

原生JS中监听input[type=range]的值变化方法

<input id="density" type="range"  oninput="densityInput(event)" onpropertychange="OnPropChanged(event)">
//js

 function OnInput (event) {
    console.log(event.target.value);
  }
  // Internet Explorer 
  function OnPropChanged (event) {
      if (event.propertyName.toLowerCase () == "value") {
          console.log(event.srcElement.value);
      }
  }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

作者最新文章