跟踪input值改变的兼容处理,该如何解决

跟踪input值改变的兼容处理兼容处理input控件值改变事件兼容处理 @ IE,FireFox,Opera,Netscape手动输入事

跟踪input值改变的兼容处理
兼容处理input控件值改变事件

兼容处理 @ IE,FireFox,Opera,Netscape

  手动输入事件捕获:手动输入内容时会触发

  复制粘贴事件捕获:复制粘贴内容时会触发

  程序设置事件捕获:javascript程序动态设置内容时会触发

  拖入事件捕获:选定内容拖入时会触发 


一些遗憾:

WEBKIT内核浏览器(Safari,Chrome等)尚未兼容第3点:程序设置事件捕获;

第4点,拖入事件捕获用的是onmousemove处理的,如果绑定函数中有alert,将会灰常杯具 - -!

欢迎讨论。


兼容代码

JScript code
 
var easychange = function(foochange){
    if(!foochange||foochange.constructor!=Function){return;}
    try{this.watch("value",function(id,oldval,newval){foochange(newval);return newval;});}catch(e){}
    this.setAttribute('oninput','('+foochange.toString()+')(this.value)');
    this.onpropertychange = function(){foochange(this.value);};
    this.onmousemove = function(){foochange(this.value);};
    this.onkeyup = function(){foochange(this.value);};
};


调用示例
JScript code
var dx = document.getElementById('x');easychange.call(dx,function(newvalue){document.title = newvalue;});


[解决办法]
jf
[解决办法]
什么意思?
[解决办法]
UP
[解决办法]
支持
[解决办法]
呵呵 up
[解决办法]
jf
[解决办法]
楼主很有厉害,我以前有这想法,可没那勇气,嘿嘿!
[解决办法]
不会但支持一下啊!
[解决办法]
顶 支持
[解决办法]
支持
[解决办法]
up
[解决办法]


学习···
[解决办法]
我愣是没看明白,
try{this.watch("value",function(id,oldval,newval){foochange(newval);return newval;});}catch(e){}

这个this.watch是干嘛的
[解决办法]
UP,学习~~~~~~~~~~~
[解决办法]
学习···
[解决办法]
貌似这样调用很危险

JScript code
var dx = document.getElementById('x');easychange.call(dx,(function(){return function(newvalue){dx.value="xxxx"+dx.value}})(dx));
[解决办法]
支持,谢谢~~
[解决办法]
或者

easychange.call(o,(function(){return function(newvalue){o.value="name:"+newvalue}})(o));

[解决办法]
接分
[解决办法]
不太懂

[解决办法]
mark

强力贴。
[解决办法]
挺实用
[解决办法]
很强大
[解决办法]
很好
[解决办法]
jf
[解决办法]
jf
[解决办法]
学习
[解决办法]
学习
[解决办法]
ding
[解决办法]
俺觉得这种一段代码可以兼容各种浏览器的方法很值得商榷!

因为如果增加了新的浏览器,那么势必要修改这段代码!

应该用更加优雅的方式来实现!

[解决办法]
up~
[解决办法]
接分
[解决办法]
想学习。
[解决办法]

探讨
有木有更好的方法?讨论一下。

[解决办法]
ding qi ding qi
[解决办法]

[解决办法]
yidingzaiding。
[解决办法]
jf
[解决办法]
jf
[解决办法]
谢谢楼主
[解决办法]
NB
[解决办法]
路过...
[解决办法]
JScript?
[解决办法]
呵呵,,好啊
[解决办法]
huitie
[解决办法]
l;idrytposai
[解决办法]
好东西
[解决办法]
就js麻烦,哎
[解决办法]
路过·~收下
[解决办法]
不错不错 支持一个
[解决办法]
JS 很好很强大
[解决办法]
不懂,还是帮顶下吧
------解决方案--------------------


谁会制作电子商务网站
[解决办法]
lu guo
[解决办法]
顶一个!!!
[解决办法]
JF
[解决办法]

[解决办法]
JS起步中
[解决办法]
JF
[解决办法]
.
[解决办法]
JS起步中
[解决办法]
楼主辛苦了,学习了
[解决办法]
学习..
[解决办法]
学习,学习
[解决办法]
学习一下。。。。
[解决办法]
这个问题我也碰到过,记得也是Safari没有搞定。

JScript code
        this.textarea_editor.onpropertychange = function() {            self.digitalCard.setDigital(self.maxLength - this.value.length);        }        if (typeof this.textarea_editor.addEventListener == "function") {            this.textarea_editor.addEventListener("keypress", this.textarea_editor.onpropertychange, false);            this.textarea_editor.addEventListener("keyup", this.textarea_editor.onpropertychange, false);             this.textarea_editor.addEventListener("input", this.textarea_editor.onpropertychange, false);        }
[解决办法]
不太建议监听onmousemove,这个触发会很频繁
[解决办法]
不太懂啊。。。
[解决办法]
不懂,还是帮顶下吧
[解决办法]
不错
[解决办法]
很好啊
[解决办法]
真的不错哦

[解决办法]
学习了啊
[解决办法]
学习 学习 不过有些看不懂
[解决办法]

[解决办法]
~jF
[解决办法]
wrwe
[解决办法]
支持
[解决办法]
学习 学习
[解决办法]
学习 学习
[解决办法]
支持,谢谢~~~
[解决办法]
时有,我也来了 ,谢谢 ~~~~~
------解决方案--------------------


顶下
[解决办法]
看看学习了
[解决办法]
up
[解决办法]
学习~学习
[解决办法]
顶~~
[解决办法]
好东西啊。。。。
[解决办法]
强人啊,这样都行,哈哈!
[解决办法]
学习。学习。。。
[解决办法]
学习了