yzzccc 2009-10-23 13:18
浏览 355
已采纳

关于JavaScript中onpropertychange事件的问题

IE6里这事件不触发,具体代码(html页面源代码)如下:




测试
请注意第一次录入数据,不论什么方式(键盘输入,键盘粘贴,鼠标粘贴)都不会改变,第二次就可以,
这个问题是出现在使用DOM创建的input,并为input赋值,在页面里写的input没有这个问题



window.onload = function(){ var body = window.document.body; var txt = document.createElement("input"); txt.id = "txt"; txt.type = "text"; txt.value = "a"; //只要在这里赋值,第一次value改变事件监听就不会触发 if(/msie/i.test(navigator.userAgent)){ txt.attachEvent("onpropertychange",handle); } else { txt.addEventListener("input",handle,false); }; body.appendChild(txt); } //当状态改变的时候执行的函数 function handle() { //alert('输入的文字为:'+document.getElementById('txt').value); document.getElementById('msg').innerHTML='输入的文字为:'+document.getElementById('txt').value; }

[b]问题补充:[/b]
也不用需要它监听js修改值, 只要我用JS 将value设置好, onproperty事件可以监听页面上用户操作的事件就行,现在连这个都出问题了
[b]问题补充:[/b]
wilow你的解决方法试了么? 我这已经试过了,同样不行。就是第一次监听不到的问题;另外,IE的onpropertychange事件是可以监听js修改的。
[b]问题补充:[/b]
既然只是改值, 为什么不用onchange, 非用onpropertychange?

使用onpropertychange是需要进行联动计算事件监听
比如:
一个表格有三列, 第三列的值从第一二列算出。
那么,当操作人修改其一二列的值时,要时时的计算第三列的值。
而不是失去焦点时触发(onchange)计算。

也想过用组合的事件来元代,但使用onkeyup虽然也可以监听键盘的事件。
但是用鼠标粘贴的情况,onpaste事件只能取到粘贴前input的值。
怎么能取到粘贴后input的值?
如果可以,那么完全可以替代onpropertychange这种方法。谢谢,请帮我想想。。

  • 写回答

7条回答 默认 最新

  • 张鸭鸭 2009-10-24 10:54
    关注

    另外 clipboardData 可取剪贴板数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题