jQuery/原生JS实时监听input输入框值变化

首先看一下dom中input事件:

  • onpropertychange: IE下,当一个HTML元素的属性改变的时候,都能通过 onpropertychange来即时捕获。onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件。 在用js脚本改动该元素值时候亦能触发onpropertychange事件。
  • oninput:是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。
  • onchange: (a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效);(b)当前对象失去焦点(onblur);

 

onchange:

1、要在 input 失去焦点的时候才会触发;

2、在输入框内容变化的时候不会触发change,当鼠标在其他地方点一下才会触发;

3、onchange event 所有主要浏览器都支持;

4、onchange 属性可以使用于:<input>, <select>, 和 <textarea>。

<script>
    function change(){
        var x=document.getElementById("password");
        x.value=x.value.toUpperCase();<br>    console.log("出发了")
     }
</script>
</head>
<body>
 
   输入你的密码: <input type="text" id="password" onchange="change()">
  
</body>

 

oninput:

1、在用户输入时触发,它是在元素值发生变化时立即触发;

2、该事件在 <input> 或 <textarea> 元素的值发生改变时触发。

3、缺陷:从脚本中修改值不会触发事件。从浏览器下拉提示框里选取值时不会触发。IE9 以下不支持,所以IE9以下可用onpropertychange 事件代替。

JS: <input type="text" id="password" oninput="change()">
 

jQuery: $("#password").on('input propertychange', change);

onpropertychange:

1、会实时触发,会在元素的属性改变时就触发事件。当元素disable=true时不会触发

2、缺陷:只在IE 下支持,其他浏览器不支持,用oninput来解决。

<input type="text" id="password" oninput="onpropertychange()">

完整用法

jQuery:

<!DOCTYPE html> 
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>RunJS</title> 
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    </head> 
    <body> 
        <input type="text" id="password" autoComplete='off'> 
      <script type="text/javascript">
$(function(){ 
  $('#password').bind('input propertychange', function() {  <br>     console.log('在实时触发!!!')
      $('#result').html($(this).val().length);  <br>     $(this).val().length != 0 ? $("#login").css("background-color", "#086AC1") : $("#login").css("background-color", "#529DE0")
  });
})   
       </script>
    </body> 
</html>   

JavaScript;

<script type="text/javascript">
   // Firefox, Google Chrome, Opera, Safari, Internet Explorer from version 9
       function OnInput (event) {
           alert ("The new content: " + event.target.value);
       }
   // Internet Explorer
       function OnPropChanged (event) {
           if (event.propertyName.toLowerCase () == "value") {
               alert ("The new content: " + event.srcElement.value);
           }
       }
</script>
 
<input type="text" oninput="OnInput (event)" onpropertychange="OnPropChanged (event)" value="Text field" />

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值