使HTML输入区域只读但可选择

时间:2016-07-01 15:52:49

标签: javascript jquery html css

我的输入区域是透明的,当您点击它时,会出现(预期)发光边框,您可以编辑文本。当你点击它时,我试图让发光的边框仍然显示,但是文本内部是不可编辑的。

<input style='border:none; background:none;' value='TEXT'>  

添加readonlyreadonly="readonly"会使输入显示为不可编辑的div,您无法双击输入区域以全部选择并且发光边框不会显示。如何在不允许更改文本的情况下保留输入功能?

2 个答案:

答案 0 :(得分:4)

您可以将readonly属性与一些CSS一起使用:

input:focus {
    box-shadow: 0 0 2px 2px #3d94db;
}
<input style='border:none; background:none;' value='TEXT' readonly> 

答案 1 :(得分:3)

可能为输入字段提供默认值

用户按键时的默认协议是键入文本。我们可以使用preventDefault()覆盖它。

现在,我刚刚意识到您可以通过鼠标右键单击事件来规避这一点。因此需要另一个事件监听器contextmenu。现在,你再也不能为此作弊了。

var inputField = document.getElementById("input-field");

inputField.addEventListener("keydown", function(event) {
    event.preventDefault();
});

inputField.addEventListener("contextmenu", function(event) {
    event.preventDefault();
});
<input type="text" id="input-field" value="This value can be selected" />