IE浏览器中使用JavaScript启用输入框失效问题排查与解决
修复IE中移除disabled属性后输入框仍禁用的问题
这个问题我太熟悉了!IE对于表单元素的disabled属性处理有自己的“小脾气”,直接用removeAttribute在IE里并不生效,得换个更贴合IE DOM机制的方式来操作。
问题根源
在IE浏览器中,表单元素的disabled是一个布尔型DOM属性,而不是普通的HTML属性。当你用removeAttribute移除disabled属性时,IE并不会同步更新元素的实际禁用状态,所以看起来属性没了,但输入框还是不能用。
解决方案
直接通过DOM属性设置disabled为false就可以完美解决这个问题,这也是跨浏览器兼容的最佳写法:
function activateStep() { // 用getElementsByName获取元素的写法 document.getElementsByName("NOM")[0].disabled = false; }
或者更推荐用id来获取元素(比name更精准,避免返回多个元素的情况):
function activateStep() { document.getElementById("inputNom").disabled = false; }
补充说明
如果你非要尝试移除属性的方式(不推荐),在IE里需要同时操作HTML属性和DOM属性,但这种写法冗余且没必要。直接设置disabled = false是最简单、最可靠的跨浏览器方案,既能解决IE的问题,也能在现代浏览器中正常工作。
内容的提问来源于stack exchange,提问作者Lamloumi Afif
相关产品推荐
相关产品推荐

