JS输入框onchange事件无效的问题

dengshangkun 2008-04-15 02:22:23
一个输入框:<INPUT maxLength=20 name=fBindCard value="3" onchange="alert('test');" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"/>
即加了只能输入数字的控制的输入框,不能触发onchange事件。
这是什么原因?
...全文
1360 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdown 2008-04-15
  • 打赏
  • 举报
回复
onpropertychange只支持IE,在FOXFIRE下还不知道怎么解决呢
wdbjsh 2008-04-15
  • 打赏
  • 举报
回复
onchange只有在onblur的时候才会执行
另外js修改值不触发onchange事件,建议,你在赋值之后手工执行onchange中的方法
JK_10000 2008-04-15
  • 打赏
  • 举报
回复
1.用js改变input的值,不会触发onchange;
2.在IE里,楼主想要的代码可能是这样的:<INPUT maxLength=20 name=fBindCard value="3" onchange="alert('test');" onkeyup="this.createTextRange().text=this.value.replace(/\D/g,'')" />
3.楼主的代码会打乱用户的光标,建议这样的验证写在onblur里。
dengshangkun 2008-04-15
  • 打赏
  • 举报
回复
onchange换成onpropertychange的话就可以了
gghunter 2008-04-15
  • 打赏
  • 举报
回复
在改变字符并且失去焦点的时候才触发onchange
llddy 2008-04-15
  • 打赏
  • 举报
回复
我测试应该是 onkeyup="this.value=this.value.replace(/\D/g,'') 这句话的关系。

因为首先执行的是 onkeyup事件 这句话是把非数字形的值 删除掉 在付值给 文本框。。

所以无论你怎么写 最后执行 onchange事件都是不会执行的,这个时候文本框已经出于不改变状态。

我这个理解不知道对不对!

所以他不会执行 onchange事件!
strife013 2008-04-15
  • 打赏
  • 举报
回复
好像是不行,建议onchange函数里的事情写在onkeyup和onafterpaste中去。

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧