jquery的实时触发事件(textarea实时获取中文个数)

(2014-09-16 11:49:50)

因为onchange在属性值改变时还必须使得当前元素失去焦点(onblur)才可以激活该事件。
 
如果你需要即时监听输入框值的变化,建议使用 onpropertychange 事件!
 
在IE下,当一个HTML元素的属性改变的时候,都能通过 onpropertychange来即时捕获。
 
在非IE浏览器可以用 oninput 事件来监听。
 
举例如下:
<input name='mytext' id='mytext' />
 
 
function immediately(){
var element = document.getElementByIdx_x("mytext");  \/\/获取元素对象
if("\v"=="v") {  \/\/判断是否IE浏览器
 
     if(/msie/i.test(navigator.userAgent)) alert('IE Browser');    \/\/ie浏览器 
 
     element.onpropertychange = myfun;   \/\/ IE的话添加onpropertychange 事件
}else{
     element.addEventListener("input",myfun,false);  \/\/非IE的话用 addEventListener 添加监听事件
}
function myfun(){
     alert(document.getElementByIdx_x('mytext').value);
}
}
 
上面是JS函数的写法~直接在页面的话就是:
<input type="text" name="mytext" oninput="alert(this.value);" onpropertychange="alert(this.value)" />
 
 
当然上面的操作步骤比较繁琐可以直接使用jquery的方式来调用。
 
这是用jquery写的判断中文输入字符的个数方法:
$(document).bind('propertychange input', function () {  
        var counter = $('#content').val().length;
        $('#tips var').text(300 - counter);    \/\/每次减去字符长度
});
 
 
补充回答:
再补充下关于几个事件的区别:
 
1、onchange事件与onpropertychange事件的区别:
onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;onpropertychange事件却是实时触发,即每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件IE专有。
 
2、oninput事件与onpropertychange事件的区别:
oninput事件是IE之外的大多数浏览器支持的事件,在value改变时触发,实时的,即每增加或删除一个字符就会触发,然而通过js改变value时,却不会触发;onpropertychange事件是任何属性改变都会触发的,而oninput却只在value改变时触发,oninput要通过addEventListener()来注册,onpropertychange注册方式跟一般事件一样。(此处都是指在js中动态绑定事件,以实现内容与行为分离)
 
3、oninput与onpropertychange失效的情况:
(1)oninput事件:a). 当脚本中改变value时,不会触发;b). 从浏览器的自动下拉提示中选取时,不会触发。
(2)onpropertychange事件:当input设置为disable=true后,onpropertychange不会触发。

jquery的实时触发事件(textarea实时获取中文个数)的更多相关文章

  1. DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件

    正常响应CellValueChanged()事件时,当改变checkbox状态时,只有当焦点离开该单元格时才能触发CellValueChanged()事件, 如果要改变checkbox值时实时触发Ce ...

  2. js和jquery中的触发事件

    改别人的坑,遇到jquery选择器和fireEvent混用,不认识fireEvent方法报错. js的方法不能使用jquery的选择器去调用. 1.fireEvent (IE上的js方法 ) 我们来看 ...

  3. JQuery 自己主动触发事件

    经常使用模拟 有时候,须要通过模拟用户操作,来达到单击的效果.比如在用户进入页面后,就触发click事件,而不须要用户去主动单击. 在JQuery中.能够使用trigger()方法完毕模拟操作.比如能 ...

  4. window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取,window.event与时间函数参数的event是同一个 事件对象

    判断事件触发的元素:     var tag = window.event.target || window.event.srcElement;    if (tag.tagName.toLowerC ...

  5. jquery实现回车键触发事件

    键盘事件有3: keydown,keypress,keyup,分别是按下,按着没上抬,上抬键盘 . 正确代码为: $(document).keyup(function(event){ if(event ...

  6. javaScript 的option触发事件

    先说jquery的option触发事件,很方便 $("option:selected")//这样就能直接触发选择的option了 在JavaScript中就显得比较麻烦,其实< ...

  7. 主动触发事件 自定义事件 trigger 及其用法

    1. 触发自定义事件方式 js.jq 2. jq 触发 2.1 默认支持的事件 $('#h').on('click',function(){ $(this).append('<p>p< ...

  8. 发现:Click事件也能获取鼠标单击的坐标

    按照MSDN的说明以及平时的习惯,我们要获取鼠标单击时的相对坐标,都会使用MouseClick等事件,今天,偶然发现,原来Click事件也可以. /* 惊天地泣鬼神的考古业绩. * 原来Cilck事件 ...

  9. jQuery实时监听input的值变化(input的值产生变化才会触发事件)

    //用于监听input的值变化(input的值产生变化才会触发事件) (function ($) { $.fn.watch = function (callback) { return this.ea ...

随机推荐

  1. ubuntu nodejs+npm 前端环境部署

    起因 安装node.js / npm (npm:6.9.0 / nodejs:v10.21.0) 软连接的添加和删除 node.js 介绍 Node.js是一个Javascript运行环境(runti ...

  2. 获取JSO字符串的key和value值

    import com.alibaba.fastjson.JSON; import java.util.ArrayList; import java.util.HashMap; import java. ...

  3. Linux:nginx负载均衡

    前提:web服务器框架已搭建好lamp/lnmp),已配置好虚拟主机名(这个的配置在上几章中有写). nginx做负载均衡主要的模块是upstream. 1.在新的机器上安装nginx 创建用户ngi ...

  4. appium 基础二:常用api接口

    一.获取手机分辨率 size=driver.get_window_size()#获取手机屏幕大小,分辨率 print(size)#{'width': 720, 'height': 1280} 得到的是 ...

  5. 编程体系结构(03):Java集合容器

    本文源码:GitHub·点这里 || GitEE·点这里 一.集合容器简介 集合容器是Java开发中最基础API模块,通常用来存储运行时动态创建的元素,基本特点如下: 泛型特点,存储任意类型对象: 动 ...

  6. 实用js方法DataUrl转为File、url转base64

    声明:仅为方便自己所需,也希望能方便他人,如有侵权,联系删除. 1,DataUrl转为File /** * DataUrl转为File * @param {String} dataUrl - data ...

  7. 使用App Metrics实现性能监控

    App Metrics监控需要安装InfluxDB时序数据库和Grafana可视化分析工具 1.安装InfluxDB 下载地址:https://portal.influxdata.com/downlo ...

  8. 关于Java的编译执行与解释执行

    编程语言分为低级语言和高级语言,机器语言.汇编语言是低级语言,C.C++.java.python等是高级语言. 机器语言是最底层的语言,能够直接执行.而我们编写的源代码是人类语言, 计算机只能识别某些 ...

  9. Linux实战(13):Centos8安装FFmpeg

    此文章所做的操作参考漏网的鱼:参考链接 步骤1:安装RPMfusion Yum存储库 RHEL或兼容发行版(如CentOS)上启用EPEL. dnf -y install https://downlo ...

  10. Java体系结构介绍

    Java技术的核心就是Java虚拟机——所有Java程序都在其上运行,需要Java虚拟机.Java API和Java,class文件的配合,Java程序才能够运行   为什么使用Java 通过网络连接 ...