【发布时间】:2011-02-21 21:55:17
【问题描述】:
如果可能,我想禁止使用 JavaScript 在 text 类型的输入字段中写入内容。
输入字段是从数据库中填充的;这就是为什么我不希望用户修改它的值。
【问题讨论】:
标签: javascript html
如果可能,我想禁止使用 JavaScript 在 text 类型的输入字段中写入内容。
输入字段是从数据库中填充的;这就是为什么我不希望用户修改它的值。
【问题讨论】:
标签: javascript html
document.getElementById('foo').disabled = true;
或
document.getElementById('foo').readOnly = true;
请注意,readOnly 应采用驼峰式格式才能在 Firefox(魔术)中正常工作。
演示:https://jsfiddle.net/L96svw3c/ -- 在某种程度上解释了disabled 和readOnly 之间的区别。
【讨论】:
readonly(小写)仍然无法工作Ubuntu 上的 Firefox 52 -- 应该是驼峰式的。
id="gate" 制作了一个input 元素,然后尝试了您的代码,这似乎对我不起作用...
readOnly; Chrome 和 Firefox 都只支持readOnly。有没有浏览器中的属性名称不在 camelCase 中?
【讨论】:
如果数据是从数据库中填充的,您可能会考虑不使用<input> 标记来显示它。不过,您可以直接在标签中禁用它:
<input type='text' value='${magic.database.value}' disabled>
如果以后需要用Javascript禁用,可以设置“禁用”属性:
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" />
【讨论】:
你也可以通过jquery:
$('#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" />
【讨论】:
您可以获取 DOM 元素并将 disabled 属性设置为 true/false。
如果你使用vue framework,这里有一个非常简单的演示。
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" />
如果您正在寻找一种纯粹的 CSS 方法,您可以通过为类提供以下属性来禁用它。
【讨论】: