1、前言

因为工作须要,需实现一个相似于微博输入框的功能,在用户动态输入文字的时候,改动提示“您还能够输入XX字”。例如以下图所看到的:

因此,略微研究了一下oninput,onpropertychange,onchange的差别和使用方法,以及onpropertychange在ie浏览器下的一个bug。

2、oninput,onpropertychange,onchange的使用方法

l          onchange触发事件必须满足两个条件:

a)当前对象属性改变,而且是由键盘或鼠标事件激发的(脚本触发无效)

b)当前对象失去焦点(onblur);

l          onpropertychange的话,仅仅要当前对象属性发生改变,都会触发事件,可是它是IE专属的;

l          oninput是onpropertychange的非IE浏览器版本号,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并不是该对象全部属性改变都能触发事件,它仅仅在对象value值发生改变时奏效。

在textarea中,假设想捕获用户的键盘输入,用onkeyup检查事件就能够了,可是onkeyup并不支持复制和粘贴,因此须要动态监測textarea中值的变化,这就须要onpropertychange(用在IE浏览器)和oninput(非IE浏览器)结合在一起使用了。

3、代码实现:

第一种方法是直接写入textarea的onpropertychange和oninput属性

<textarea id="wb_comment_content" name="wb_comment_content" onblur="blur_wb_textarea(this);" onfocus="click_wb_textarea(this);" onpropertychange="set_alert_wb_comment();" oninput="set_alert_wb_comment();" class="gary666" style="font-size:12px;" mce_style="font-size:12px;">欢迎您每天来微评爱车哦……

假设想要用JavaScript设置textarea的属性,需例如以下:

if(isIE)
{
document.getElementById("wb_comment_content").onpropertychange = set_alert_wb_comment();
}
else //须要用addEventListener来注冊事件
{
document.getElementById("wb_comment_content").addEventListener("input", set_alert_wb_comment, false);
}

其余函数

function click_wb_textarea(obj)

{

if(obj.value==obj.defaultValue)

{

obj.value="";

}

//obj.className=""; //这样设置类名在ie下会有在输入第一个字符的时候onpropertychange不会触发的bug

obj.style.color="#000";

return false;

}

function blur_wb_textarea(obj)

{

if(obj.value=="")

{

//obj.className="gary666";

obj.style.color="#666";

obj.value= obj.defaultValue;

}

return false;

}

4、onpropertychange的bug

在代码实现时,发如今响应用户onclick了textarea时,假设使用obj.className="XX";来改变textarea输入框中字体的样式,会导致在ie下会有在输入第一个字符的时候onpropertychange不会触发的bug,因此须要这样设置:obj.style.color="#000";

oninput,onpropertychange,onchange的使用方法和差别的更多相关文章

  1. oninput,onpropertychange,onchange的用法和区别【转载】

    1.前言 由于工作需要,需实现一个类似于微博输入框的功能,在用户动态输入文字的时候,修改提示“您还可以输入XX字”.如下图所示: 因此,稍微研究了一下oninput,onpropertychange, ...

  2. oninput,onpropertychange,onchange的用法和区别

    1.前言 由于工作需要,需实现一个类似于微博输入框的功能,在用户动态输入文字的时候,修改提示“您还可以输入XX字”.如下图所示: 因此,稍微研究了一下oninput,onpropertychange, ...

  3. html5与js关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick="select();"。做购物车页面时会要用到。

    关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="s ...

  4. 监听输入框变化(oninput,onpropertychange,onchange)

    oninput,onpropertychange,onchange: oninput是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于 ...

  5. 总结oninput、onchange与onpropertychange事件的使用方法和差别

    onchange事件仅仅在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效:而onkeydown/onkeypress/onkeyup在处理复制.粘贴.拖拽.长按键(按住键盘不放)等细节上 ...

  6. 【转载】实时监听输入框值变化的完美方案:oninput & onpropertychange

    oninput 是 HTML5 的标准事件,对于检测 textarea, input:text, input:password 和 input:search 这几个元素通过用户界面发生的内容变化非常有 ...

  7. 总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码

    总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比 ...

  8. oninput、onchange与onpropertychange事件的区别, 与input输入框实时检测

    这几天项目着急,同时也学到好多以前没有接触过的知识.oninput.onchange与onpropertychange事件的区别, 与input输入框实时检测 onchange事件只在键盘或者鼠标操作 ...

  9. js/jquery 实时监听输入框值变化的完美方案:oninput & onpropertychange

    (1)     先说jquery, 使用 jQuery 库的话,只需要同时绑定 oninput 和 onpropertychange 两个事件就可以了,示例代码: $('#username').bin ...

随机推荐

  1. SqlDependency不起作用

    今天使用SqlDependency,结果不起作用,失效,不管数据库怎么修改,这边都没反应,OnChange事件总是不执行,很奇怪.我打开msdn里的例子,代码复制出来,结果没问题,能执行,那剩下来的问 ...

  2. 关于scrollTop

    如下图

  3. .net 基础之截取字符串

    在实际开发中有时难免会遇到需要获取某个字符串中的某些字符串,这里我们可以用到字符串截取的办法. 截取字符串的方法很容易(暂不包含中文字符串),只要稍微有点.net基础的人看了都能看懂. /// < ...

  4. 关于arm-linux-gcc的安装与配置

    在嵌入式开发中我们经常会用到arm-linux-gcc来编译我们的应用程序.作为arm-linux-gcc的入门,我们先看看如何安装arm-linux-gcc. 安装arm-linux-gcc还是比较 ...

  5. struts2 标签

    一.逻辑控制标签 用于进行逻辑控制输出.主要分以下几类: 1)条件标签:用于执行基本的条件流转 <s:if>:拥有一个test属性,其表达式的值用来决定标签里内容是否显示.<s:if ...

  6. NSInteger和BOOL的底层类型

    在Objective-C中,NSInteger和BOOL是通过typedef或者#define宏进行定义的,那么,这两个数据类型的底层类型是什么呢? 首先查看NSInteger的定义: #if __L ...

  7. 关于PS里图层样式的全局光

    勾选“使用全局光”,则各个图层样式的光源角度都会相同. 我在“内阴影”效果里勾选了“使用全局光”,然后我发现当我在“投影”效果和“斜面和浮雕”效果里选择使用全局光时,它们的光源角度自动变成120度, ...

  8. https://github.com/aptana/studio3/releases aptana

    https://github.com/aptana/studio3/releases  aptana

  9. 掌握string.h里的常用函数

    字符串输出函数 puts 格式:  puts(字符数组名) 功能:把字符数组中的字符串输出到显示器. 即在屏幕上显示该字符串. 字符串输入函数 gets 格式:  gets (字符数组名) 功能:从标 ...

  10. Super Jumping! Jumping! Jumping!(hdu 1087 LIS变形)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...