zoukankan      html  css  js  c++  java
  • input输入框内容变化实时监听

    js实现的文本框内容发生改变立马触发事件简单介绍:
    本章节介绍一下如何在文本框的内容发生变化的时候,立马触发一个事件执行响应的操作,而不是像是keydown或者keyup事件一样,只能够检测通过键盘输入导致内容的变化, 下面就通过代码实例做一下简单介绍。


    一.相关知识准备:
    1.onchange事件:
    此事件会在元素内容发生改变,且失去焦点的时候触发。
    浏览器支持度较好。
    2.onpropertychange事件:
    此事件会在元素内容发生改变时立即触发,即便是通过js改变的内容也会触发此事件。
    元素的任何属性改变都会触发该事件,不止是value。
    只有IE11以下浏览器支持此事件。
    3.oninput事件:
    此事件会在value属性值发生改变时触发,通过js改变value属性值不会触发此事件。
    只有IE8以上或者谷歌火狐等标准浏览器支持。
    二.代码实例:
    既然知道各个事件的特性,那么我们可以通过兼容性方法,实现兼容各个浏览器的代码。
    代码如下:

    ===================================================

    <html>
    <head>
    <meta charset="utf-8">
    <meta name="author" content="http://www.softwhy.com/" />
    <title>蚂蚁部落</title>
    <script type="text/javascript">
    window.onload=function(){
      var otxt=document.getElementById("txt");
      var oshow=document.getElementById("show");
      var count=0;
      if(document.all){
         otxt.onpropertychange=function(){
           count=count+1;
           oshow.innerHTML=count;
         }
      }
      else{
        otxt.oninput=function(){
          count=count+1;
          oshow.innerHTML=count;
        }
      }
    }
    </script>
    </head>
    <body>
    <div id="show"></div>
    <input type="text" id="txt" value="蚂蚁部落"/>
    </body>
    </html>

    ===============================================================

    propertychange(ie)和input事件
    input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标
    黏贴的改变都能及时监听到变化
    propertychange,只要当前对象属性发生改变。(IE专属的)
    但是
    oninput 和 onpropertychange 这两个事件在 IE9 中都有个小BUG,
    那就是通过右键菜单菜单中的 剪切 和 删除 命令删除内容的时候不会触发,
    而 IE 其他版本都是正常的,目前还没有很好的解决方案。

    1
    2
    3
    4
    5
    6
    7
    $(function(){
                $("input[type='search']").bind('input propertychange',function(){
                    //做一些事情
                    var val = $(this).val();              
                    console.log(val);
                })
            });

      keypress  就是能监听键盘事件,鼠标复制黏贴操作他就无能为力

    change事件  触发事件必须满足两个条件: 
    a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)
    b)当前对象失去焦点(onblur)

    --------------------------------------分割线 -------------------------------------- 

    之前一直用change事件来监听输入框内容是否发生变化,只有当输入框失去焦点时才会触发,没想到html5还有个input事件,只要输入框内容发生变化就会立即触发,既然有这么好的东西我们干嘛放着不用呢,接下来就来给大家介绍一下:

    如果我们页面上有这样一个简单到极致的输入框:

    <input type="text">

    那么我们现在用jquery给它绑定input事件,如下:

    $("input:text").bind("input propertychange",function(){

      console.log($(this).val().length);//打印输入框字符长度
     
    });

    这样一来只要输入框内容发生变化,都会立即打印出里面字符串的长度来了。

    需要注意的是input事件是html5的东东,IE9以下版本中是无法支持的,所以需要用propertychange事件来代替。

    input事件除了能够监听input:text元素的内容变化,同时还可以监听input:password,input:search以及textarea这几个元素,在html绑定的写法为:

    <input type="text" oninput="onInput(event)" onpropertychange="onPropertyChange(event)">

  • 相关阅读:
    JavaScript Array 属性 构造器 将数组值转为大写
    Eslint 配置及规则说明
    Vue基于vue-quill-editor富文本编辑器使用心得
    css display:flex 属性
    HTML5本地存储之localStorage、sessionStorage
    图片充满div
    微信小程序 Input框提交后清空
    前端简历怎么写
    响应式与自适应的区别
    JS点击子元素不触发父元素点击事件
  • 原文地址:https://www.cnblogs.com/Tohold/p/9272898.html
Copyright © 2011-2022 走看看