【发布时间】:2011-12-06 06:59:29
【问题描述】:
我有一个 HTML 输入字段,我希望用户能够看到但不能编辑。如果我将该字段标记为“已禁用”,则它不会与表单的其余部分一起提交。如果我将它标记为“只读”,它的行为就像我想要的那样,但仍然看起来启用(至少在 Chrome 上)。
基本上,我希望输入字段看起来 像一个禁用字段,但 表现 为只读字段。这可能吗?
谢谢。
编辑:另外,如果我将其标记为“只读”,仍然可以通过双击它并选择以前存在的内容来更改其值。
【问题讨论】:
我有一个 HTML 输入字段,我希望用户能够看到但不能编辑。如果我将该字段标记为“已禁用”,则它不会与表单的其余部分一起提交。如果我将它标记为“只读”,它的行为就像我想要的那样,但仍然看起来启用(至少在 Chrome 上)。
基本上,我希望输入字段看起来 像一个禁用字段,但 表现 为只读字段。这可能吗?
谢谢。
编辑:另外,如果我将其标记为“只读”,仍然可以通过双击它并选择以前存在的内容来更改其值。
【问题讨论】:
这里是解决方法:您在需要的地方禁用了输入(仅用于显示值),并有一个带有您需要的名称和值的隐藏输入。
【讨论】:
您可以使用 css 使其看起来像您想要的那样,尽管这可能与跨浏览器/平台的其他禁用字段不匹配。
<input type="text" value="Sample text" readonly="readonly" style="color: #787878;"/>
【讨论】:
我在使用 JSF 时遇到了类似的问题,其中隐藏字段可用于保存我需要的值,但如果在提交时表单验证失败,则只读或禁用输入字段中的值将被清除。我找到了一个替代解决方案,通过让输入字段在技术上可编辑,它似乎工作得相当优雅,但它通过在收到焦点后立即进行模糊来防止编辑。虽然您的服务器端环境可能没有我对 JSF 所做的相同问题(即使从标记为只读的输入字段也不会提交值),但您可能可以在您的情况下使用相同的技术,使用结果是您不需要单独的隐藏字段来保留该值。然而,与第二个答案一样,它并没有解决禁用字段 look 的问题,至少在没有一些额外的 CSS 代码的情况下不会。
JSF中的代码:
<p:inputText id="entid" value="#{RequestBean.entityID}" onfocus="blur();" />
变成下面的 HTML:
<input id="entid" type="text" value="10003" onfocus="blur();" />
您可以在此处查看更多信息:How to persist JSF view parameters through validation
【讨论】:
我知道这已被回答,但我想给出我的 CSS 示例。
因为当我在寻找解决方案时,如何设置输入字段的样式以使其看起来像是被禁用,所以我总是以这样的输入字段结束。
左边框和上边框颜色较深等。因此使用此 CSS 代码解决了它。
input[readonly]{
border-color: darkgrey;
border-style: solid;
border-width: 1px;
background-color: rgb(235, 235, 228);
color: rgb(84, 84, 84);
padding: 2px 0px;
}
发了jsfiddle,这样你们就可以仔细看看了。
在 Chrome 上看起来不错,在其他浏览器上你需要修改颜色。像在 Firefox 中一样,您也需要将颜色和背景颜色更改为等。
background-color: rgb(240, 240, 240);
color: rgb(109, 109, 109);
【讨论】: