`
liwenshui322
  • 浏览: 518964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)oninput,onpropertychange,onchange的用法和区别

阅读更多

1、前言

    由于工作需要,需实现一个类似于微博输入框的功能,在用户动态输入文字的时候,修改提示“您还可以输入XX字”。如下图所示:

 

 

 

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

 

2、oninput,onpropertychange,onchange的用法

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

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

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

   onpropertychange的话,只要当前对象属性发生改变,都会触发事件,但是它是IE专属的; 
   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";


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunlylorn/archive/2011/01/07/6123355.aspx

  • 大小: 2.9 KB
分享到:
评论

相关推荐

    oninput,onpropertychange,onchange的用法和区别

    oninput、onpropertychange、onchange 的用法和区别 在 Web 开发中,了解 oninput、onpropertychange、onchange 三个事件的用法和区别非常重要,这三个事件都是用于检测用户输入的变化,但它们之间存在着一些关键的...

    onchange,onpropertychange,oninput键盘输入和js赋值时区别

    在JavaScript中,`onchange`、`onpropertychange` 和 `oninput` 是与用户交互相关的事件,它们各自有特定的触发条件,特别是在处理表单元素的键盘输入和JavaScript动态赋值时。以下是对这三个事件的详细解释: 1. `...

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

    JavaScript 监听输入框值的即时变化 ...监听输入框值的即时变化可以使用onpropertychange 事件或oninput 事件来实现,但是需要注意浏览器的差异性问题,使用不同的事件和注册方法来适应不同的浏览器类型。

    javascript开发中使用onpropertychange,oninput事件解决onchange事件的不足

    onchange在用于文本框输入框时,有一个明显的不足....但是oninput有个诡异,必须用addEventListener的方式来绑定事件.否则无效. 好了, 以下是演示例子, 主流浏览器都没问题: on用onpropertychange,oni

    js中的onchange和onpropertychange (onchange无效的解决方法)

    在JavaScript中,`onchange` 和 `onpropertychange` 是两个不同的事件处理方式,它们各自在特定场景下有着不同的用途。本文将详细讲解这两个事件的区别以及如何解决 `onchange` 事件在某些情况下的无效问题。 `...

    兼容Firefox和IE的onpropertychange事件oninput

    在JavaScript中,处理DOM元素状态变化的事件有多种,其中包括`onpropertychange`、`onchange`和`oninput`。这些事件在不同浏览器中有着不同的表现和兼容性,尤其是在Internet Explorer (IE) 和 Firefox之间。 `...

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

    要实现这些功能,JavaScript 提供了几个事件监听器,其中最常用的是 `onpropertychange` 和 `oninput`。 ### onpropertychange 事件 `onpropertychange` 是 Internet Explorer 浏览器特有的事件,当一个 HTML 元素...

    jQuery/JS监听input输入框值变化实例

    文章提到,IE9以下版本不支持oninput事件,可以使用onpropertychange作为替代方案。 文中还包含了一些关于如何在实际项目中应用这些监听事件的示例代码。例如,演示了如何利用oninput事件监听输入框的实时输入,并...

    input标签内容改变的触发事件介绍

    2. oninput事件与onpropertychange事件的区别: oninput事件是IE之外的大多数浏览器支持的事件,在value改变时实时触发,但是通过js改变value时不会触发;onpropertychange事件是任何属性改变都会触发,而oninput却...

    js onpropertychange输入框 事件获取属性

    当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如&lt; input name=”text1″ id=”text1″ /&gt;对象的value属性被页面的脚本修改的...firefox的事件oninput,效果和IE的onproperchange相同。

    js监听表单value的修改同步问题,跨浏览器支持.docx

    然后,开发者注意到`oninput`事件,网上普遍认为在Firefox中`oninput`与IE的`onpropertychange`效果相同,但实际上并不完全一致。`oninput`事件仅在用户直接输入导致value值变化时触发,而通过JavaScript改变value值...

    捕获input文本框内容改变事件的js代码

    ### oninput、onchange和onblur事件 在HTML中,input元素支持多种事件来监控其内容的变化,主要有以下三种事件: - **oninput事件**:此事件在元素获得用户输入时立即触发,无需失去焦点,这意味着在用户还在输入...

    javascript 学习笔记(onchange等)

    本篇“JavaScript学习笔记”针对JavaScript中一些实用的技巧进行了总结,特别是在事件监听以及属性获取方面,涵盖了onchange、onpropertychange、oninput等事件以及button标签的type属性、jQuery处理href属性兼容性...

    深入理解html表单输入监听

    首先,我们要了解的是表单输入监听中最为常见的两个事件:onchange和oninput。 onchange事件会在元素的内容发生改变,并且元素失去焦点后触发。这意味着,当用户在表单元素中输入信息后,如果继续进行了其他操作...

Global site tag (gtag.js) - Google Analytics