我想使用JavaScript禁止输入类型为
text
的输入框中的写入,如果可能的话。这个输入框是从数据库中填充的,所以我不希望用户修改它的值。text
的输入框中的写入,如果可能的话。这个输入框是从数据库中填充的,所以我不希望用户修改它的值。document.getElementById('foo').disabled = true;
或者document.getElementById('foo').readOnly = true;
注意,readOnly
在 Firefox 中需要使用驼峰式命名才能正常工作(神奇的事情)。
演示:https://jsfiddle.net/L96svw3c/ —— 稍微解释了 disabled
和 readOnly
的区别。
<input>
标签来展示它。但是,你可以在标签中直接禁用它:<input>
标记来显示它。尽管如此,您仍可以在标记中直接禁用它:<input type='text' value='${magic.database.value}' disabled>
如果您需要以后使用Javascript禁用它,可以设置"disabled"属性:
document.getElementById('theInput').disabled = true;
我建议不要将值显示为 <input>
的原因是,根据我的经验,它会导致布局问题。如果文本很长,则在 <input>
中,用户需要尝试滚动文本,这不是普通人会想到的事情。如果你只是把它放在一个 <span>
中,你就有了更多的样式灵活性。
以任何你喜欢的方式获取输入框的引用(例如document.getElementById('mytextbox')
),并将其readonly
属性设置为true
:
myInputBox.readonly = true;
或者您可以直接内联添加此属性(无需JavaScript):
<input type="text" value="from db" readonly="readonly" />
$('#foo')[0].disabled = true;
工作示例:
$('#foo')[0].disabled = true;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="foo" placeholder="placeholder" value="value" />
let vm = new Vue({
el: "#app",
data() {
return { flag: true }
},
computed: {
btnText() {
return this.flag ? "Enable" : "Disable";
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" value="something" :disabled="flag" />
<input type="button" :value="btnText" @click="flag=!flag">
</div>
// CSS Markup
.disabled-input {
pointer-events: none;
}
// HTML
<input class="disabled-input" />
document.getElementById('hello3').disabled = true;
document.getElementById('world3').readOnly = true;
<input type="text" value="Hello 1">
<br>
<input type="text" value="Hello 2" disabled>
<br>
<input type="text" value="Hello 3" id="hello3">
<br>
<br>
<input type="text" value="World 1!">
<br>
<input type="text" value="World 2!" readonly>
<br>
<input type="text" value="World 3!" id="world3">
readonly
(小写)仍然无法工作 - 应该是驼峰式大小写。 - hudolejevreadOnly
;Chrome和Firefox仅支持readOnly
。是否曾经有过属性名称不是驼峰式命名的浏览器? - Sebastian Simon<script>
是否在HTML之上,没有defer
属性和没有DOMContentLoaded
或load
监听器?请参阅为什么jQuery或诸如getElementById
之类的DOM方法找不到元素?。这与readOnly
或disabled
无关。 - Sebastian Simon