如何禁用输入类型=文本?

IT技术 javascript html
2021-03-10 02:28:05

text如果可能,我想禁用使用 JavaScript在类型输入字段中写入输入字段是从数据库填充的;这就是为什么我不希望用户修改它的值。

6个回答
document.getElementById('foo').disabled = true;

或者

document.getElementById('foo').readOnly = true;

请注意,readOnly应该在驼峰式大小写中才能在 Firefox 中正常工作(魔术)。

演示:https : //jsfiddle.net/L96svw3c/——在某种程度上解释了disabled之间的区别readOnly

你一点也不迟,魔法仍然存在(:我不记得我当时在哪些平台上测试过,但今天readonly(小写)在 Ubuntu 上的 Firefox 52 中仍然不起作用——应该是驼峰式的。
2021-04-17 02:28:05
WHATWG将属性指定为readOnlyChrome 和 Firefox 都只支持readOnly. 有没有浏览器中的属性名称不是驼峰式的?
2021-04-18 02:28:05
这对我有用。Jquery 版本是 $('input').prop('disabled', true)
2021-04-26 02:28:05
我在这件事上晚了七年——但这两者在 2017 年有什么语义差异吗?
2021-05-13 02:28:05
为什么这对我不起作用?我制作了一个input元素id="gate"并尝试了你的代码,这似乎对我不起作用......
2021-05-17 02:28:05

如果您在页面呈现时知道这一点,这听起来像您这样做,因为数据库有一个值,最好在呈现时禁用它而不是 JavaScript。为此,只需将readonly属性(或者disabled,如果您还想从表单提交中删除它)添加到<input>,如下所示:

<input type="text" disabled="disabled" />
//or...
<input type="text" readonly="readonly" />
我不知道为什么这会得到选票,它没有回答问题。我们期待 javascript 答案。
2021-04-19 02:28:05
请记住,浏览器可以随意忽略“已禁用”或“只读”属性,并且不应依赖此方法来可靠地防止数据被更新……如果处理表单的服务器端代码仍将接受一个来自该字段的值并更新它,任何有足够智慧来创建自己的表单的人都可以绕过这个“禁用”......这只是为了在受信任的环境中方便用户界面。防止它的真正方法是使用服务器端逻辑。
2021-04-21 02:28:05
禁用模式会阻止输入框上的点击事件,只读模式不会。供参考。
2021-04-22 02:28:05
要使“只读”输入字段看起来像“已禁用”字段,请设置“style="color: grey; background-color: #F0F0F0;"”。(这是对这个答案的评论
2021-04-24 02:28:05
@Sophie 这是提问者根据他们的情况做的最正确的方法,也许标题更改是有序的。
2021-05-13 02:28:05

如果数据是从数据库填充的,您可能会考虑使用<input>标签来显示它。不过,您可以直接在标签中禁用它:

<input type='text' value='${magic.database.value}' disabled>

如果您稍后需要使用 Javascript 禁用它,您可以设置“禁用”属性:

document.getElementById('theInput').disabled = true;

我建议不要将值显示为 an 的原因<input>是,根据我的经验,它会导致布局问题。如果文本很长,那么<input>用户将需要尝试滚动文本,这不是正常人会猜到的。如果你只是将它放入 a<span>或其他东西,你会有更多的造型灵活性。

请记住,禁用会使文本在某些浏览器上几乎不可读。使用 readonly 属性可能会更好,例如 <input type="text" value="foo" readonly>
2021-05-07 02:28:05

你也可以通过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" />

@Chani Poz 您在 jquery 对象上调用本机 js setter 会导致错误。$('#foo')[0].disabled = true 或 $('#foo').get(0).disabled = true 将完成这项工作
2021-04-24 02:28:05

获取您喜欢的输入框的引用(例如document.getElementById('mytextbox'))并将其readonly属性设置true

myInputBox.readonly = true;

或者,您可以简单地内联添加此属性(不需要 JavaScript):

<input type="text" value="from db" readonly="readonly" />
如果您正在编写 HTML(而不是 XHTML),那就是 <input type="text" value="from db" readonly>
2021-04-17 02:28:05