同时绑定onpropertychange 和 oninput 事件,实时检测 input、textarea输入改变事件,支持低版本IE,支持复制粘贴

实时检测 input、textarea输入改变事件,支持低版本IE,支持复制粘贴

检测input、textarea输入改变事件有以下几种:

1、onkeyup/onkeydown 捕获用户键盘输入事件。

  缺陷:复制粘贴时无法检测

2、onchenge

  缺陷:要满足触发条件:当前对象的属性改变(由键盘或鼠标触发)且对象失去焦点

3、onpropertychange 当前对象属性改变就会触发

  缺陷:只支持低版本IE

4、oninput 和onpropertychange类似,当前对象属性改变就会触发

  缺陷:不支持低版本IE

可以看出以上几种方法都有各自的缺陷,1和2一般不能满足需求,3和4的缺陷正好互补,两个事件结合起来使用可以兼容IE、firefox、chrome;

所以同时绑定onpropertychange 和 oninput 可以达到实时检测输入内容的目的

(jquery用propertychange 和 input)。

代码实例(jquery):

<!--superGG1990原创发表于博客园http://www.cnblogs.com/superGG1990,其他商业网站转载均为盗版,个人博客网站转载请注明出处 2017-05-12-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>监听输入事件</title>
    <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
    <style>
        b {color:red; font-size:18px;}
    </style>
</head>
<body>
    <textarea style="width:800px; height:300px;"></textarea>
    <div>你已经输入了<b>0</b>个字</div>
    <script>
        $(‘textarea‘).on(‘input propertychange‘,function(){
            var val = $(this).val()
            var textNum = val.length;
            if(textNum > 200){
                textNum = 200;
            }
            $(‘b‘).html(textNum)
            //超过200个字提示
            if(val.length>200){
                var textVal = val.substring(0,200)
                $(this).val(textVal)
                alert(‘评论内容大于200字‘)
            }
        })
    </script>
</body>
</html>

原文出处 superGG1990  www.cnblogs.com/superGG1990

时间: 2024-10-11 00:11:10

同时绑定onpropertychange 和 oninput 事件,实时检测 input、textarea输入改变事件,支持低版本IE,支持复制粘贴的相关文章

使用 onpropertychange 和 oninput 检测 input、textarea输入改变

检测input.textarea输入改变事件有以下几种: 1.onkeyup/onkeydown 捕获用户键盘输入事件. 缺陷:复制粘贴时无法检测 2.onchenge 缺陷:要满足触发条件:当前对象的属性改变(由键盘或鼠标触发)且对象失去焦点 3.onpropertychange 当前对象属性改变就会触发 缺陷:只支持低版本IE 4.oninput 和onpropertychange类似,当前对象属性改变就会触发 缺陷:不支持低版本IE 可以看出以上几种方法都有各自的缺陷,1和2一般不能满足需

以input=file方式,获取文件时,在IE下8无法通过某个按钮click事件间接触发input=file的change事件

最近在项目中遇到了许多上传问题,公司内部的组件,通过form上传,需要使用input=file触发选择文件, 因为input=file在各个浏览器中显示的样式是不同的,谷歌,火狐,IE都有所不同,而且不太美观,所以为了解决 这一个问题,一开始采用了隐藏input=file 然后通过一个显示的button间接触发input=file的click事件如下 <input type="file" id="upload" style="display:none

ELK服务搭建(开源实时日志分析ELK平台部署)(低版本—简单部署)

开源实时日志分析ELK平台部署 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理日志后,日志的

原生js监听input值改变事件

哈哈哈,又来了,今天闲来无事,实验了下原生js监听input value值改变事件,下面就来说道说道: 本来写监听input值便获是用jquery的,之前的随笔写了,就是这个方法,地址:http://www.cnblogs.com/wteng/p/5434403.html $('input').bind('input propertychange', function() { //to do }) 现在用原生js来实现一遍(其实我翻了下jquery的监听事件on的源码,没找到不知道他写哪了),本

正确处理WPF中Slider值改变事件的方式

最近在用WPF数据绑定重写一下播放器项目时遇到的关于Slider的问题,在窗体透明度调节和播放进度调节上用了Slider控件.调节窗体透明度我是 这么想的:将窗体的Opacity属性的值与Slider的值绑定不就可以了,Opacity="{Binding ElementName=Slider,Path=Value,Mode=OneWay}",这样根本不用处理Slider的值改变事件 (ValueChanged).不过我要做保存设置的功能,因此肯定要记录Slider的值咯,于是处理一下V

IE9浏览器onpropertychange和oninput事件对delete键和剪切不触发问题解决方法

一.问题 对于输入框实时监听,常用oninput事件,低版本的IE浏览器使用onpropertychange事件.但是还有一点瑕疵就是IE9对于输入框的剪切和delete键的操作没有任何反应,这是一件非常悲伤的事情. 二.方法 亮点:keyUp监听delete和剪切,手动触发事件 代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>

onchange onpropertychange 和oninput事件

汇总onchange onpropertychange 和oninput事件的区别:                1.onchange事件与onpropertychange事件的区别:                             onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发:onpropertychange事件却是实时触发,即每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件IE专有.                 2.oninpu

js监听输入框值的即时变化onpropertychange、oninput

js监听输入框值的即时变化onpropertychange.oninput 很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感. 要达到的效果 很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感.比如即时显示输入框已经被输入的字节数,或者即时读取输入的值来进行搜索引导,也就是google的关联搜索效果等. 只要我们能捕获即时事件就能做到很多事情. 需要了解的知识 首先,我们需要了解onchange和onpropert

实时监测input控件value值动态变化的事件

目录 [1]input [2]propertychange [3]兼容处理 前面的话 HTML5为input控件新增了很多type属性,大大增加了input控件的应用场景.其中一个是type="range"的input控件,可以通过拖动游标改变value值,但并不是所有浏览器都可以实时显示,除了IE10+浏览器 说到改变value值的事件,首先想到的便是change事件,但change事件的触发条件是失去焦点并且value值改变.而游标拖动并没有失去焦点.所以,change事件并不能达