实现这一需求有多种方法:
1. 你可以在元素中同时保留readonly
和disabled
两个属性,如果你希望仅使用HTML解决方案的话。例如:
<input type="text" id="yourElementId" value="不可编辑的输入" readonly disabled>
每当你需要启用该元素时,可以通过JavaScript移除这两个属性:
// 启用元素
document.getElementById("yourElementId").removeAttribute("readonly");
document.getElementById("yourElementId").removeAttribute("disabled");
反之,如果要禁用元素,则重新设置这两个属性:
// 禁用元素
document.getElementById("yourElementId").setAttribute("readonly", true);
document.getElementById("yourElementId").setAttribute("disabled", true);
2. 或者,你可以仅保留readonly
属性以确保内容不可编辑但可被选中,并创建一个CSS类选择器规则来调整元素的透明度以模拟灰色状态。例如:
.greyed {
opacity: 0.5;
}
鉴于你在整个流程的某些步骤中只需要readonly
属性,你可以根据需要为元素添加或移除这个自定义类。例如:
document.getElementById("yourElementId").classList.toggle("greyed");
如果元素已包含该类,则调用此方法会移除该类,反之亦然。若要使元素再次显得活跃,除了移除类之外,还可以移除readonly
属性:
document.getElementById("yourElementId").removeAttribute("readonly");
3. 你还可以完全不使用readonly
和disabled
属性,而是创建一个CSS规则来综合满足所有需求。例如:
.disabled {
user-select: auto;
pointer-events: none; /* 使用箭头光标 */
cursor: default; /* 或使用此行替代上一行,确保所有光标都为默认样式 */
opacity: 0.5;
}
同理,每次需要启用或禁用元素时,只需像之前那样切换这个类即可:
document.getElementById("yourElementId").classList.toggle("disabled");
以上任何一种建议都能达到你的要求。