表单元素 disabled 的判定
测试需求,判定表单元素是否 disabled。
看起来很简单,直接在浏览器控制台里用 $('input[type="text"]) 选中一个 <input>,验证一下它的 disabled 属性,没问题,于是就直接写成:
function isDisabled(element) {
return element.disabled;
}
后来做到一个用户权限的功能,某一类用户,可以看到某些设置,但不能改。为了省事,就直接 禁用这部分表单。同时,因为我们用 <fieldset> 包装表单元素,于是我就把 disabled 加在 <fieldset> 上,这样可以不需要修改每个元素。
结果测试的时候就失败了,JS 认为这些元素不是 disabled,但视觉上和操作上它们的确被禁用了。于是调试,发现这些元素的 disabled 的确为 false,但是它们可以 .matches(':disabled'),Google 之,StackOverflow 的几个问答也是同样的结果。
于是将前面的函数改成
function isDisabled(element) {
return element.matches(':disabled');
}
进一步的,我检查了其它几个属性,包括 readonly,required,发现 <fieldset> 只支持 disabled。
相关文章
尬聊会:第十一期
尬聊会第11期实录。介绍了学会背锅学会汇报;变黑锅为机会;纯CSS校验表单的相关知识。
2018-07-042 分钟
iOS Safari 播放音频的技巧分享
开发 Web App 一直是个蛮尴尬的事情。一方面,Google 不断在推;PWA 等技术也越来越好;另一方面 […]
2024-05-2514 分钟
使用 `postMessage` 跨域名迁移 `localStorage`
朋友的网站有个需求:要从 A 域名迁移到 B 域名。所有内容不变,只是更改域名。这个需求不复杂,理论上改下配置 […]
2023-02-127 分钟


