input代替下拉框设置只读无法调用change事件的解决

在使用input标签代替select实现下拉框功能时,有时要禁止input的输入功能,只能选择下拉框中选项,选择后进行判断是否有值进入。
正常思路是选择选项后,使用change事件,但是使用readonly将input变为只读后,change事件会失效。
解决办法:
选择选项后使input失去焦点(也不能输入,失去焦点也没有影响),使用blur事件,在blur中编写相应的逻辑代码。


注:
在ng-blur绑定的方法中直接写同步操作,会报错,如下:

$rootScope:inprog: $apply already in progress error.

原因:
调用 blur() 事件后,ng-blur 触发并且尝试一个新的执行周期,然后AngularJs就不干活了。
事实上,在 同步操作 的处理还没有完成时,blur 同步执行并且迅速触发了处理程序,这可能是 AngularJs 的一个 bug,解决:
可以使用 timeout t i m e o u t 解 决 这 个 问 题 。 即 在 timeout的回掉函数中编写逻辑代码,将延迟时间设为0即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值