完全只读转换HTML文本框

时间:2011-07-30 13:42:38

标签: javascript jquery html css

要求:使文本字段只读 - 未禁用,用户甚至不能单击该字段一次(或多或少的文本字段应该像选择框一样)。用户按下tab时应该能够移动到下一个字段(正常行为)Internet Explorer应该是用于呈现代码的浏览器。

我一直在做的示例代码就在这里

<table>
<tr>
<td><input type="text" value="test1" onfocus="this.blur()" readonly="true" /></td>
</tr>
<tr>
<td><input type="text" value="test2" onfocus="this.blur()" readonly="true" /></td>
</tr>
<tr>
<td><input type="text" value="test3" onfocus="this.blur()" readonly="true" /></td>
</tr>
</table>

上述代码的问题是 1.用户可以单击一次(闪烁光标可见) 2.按Tab键 - 用户不会移动到下一个字段。

仅适用于IE。谢谢

4 个答案:

答案 0 :(得分:5)

要解决标签问题,您可能需要在输入中添加tabindex

<input type="text" value="test1" onfocus="this.blur()" readonly="readonly" tabindex="1"/>
<input type="text" value="test2" onfocus="this.blur()" readonly="readonly" tabindex="2"/>
<input type="text" value="test3" onfocus="this.blur()" readonly="readonly" tabindex="3"/>

答案 1 :(得分:3)

我想说如果你需要一些只读的东西,并且不能表现得像表单元素,那么你就不应该使用表单元素:只需将值用作文本:

<tr>
  <td>test1</td>
</tr>

这样:

  • 它的行为不像表单元素,
  • 没有人会认为应该能够修改它


如果有必要,您可以使用一些CSS来设置样式,带边框,例如......

答案 2 :(得分:2)

这会让您选中每个文本框,但不会让您点击它们。 使用onclick事件将其模糊并设置readonly属性以防止编辑。

http://jsfiddle.net/aQvGx/

答案 3 :(得分:1)

您可以使用disabled。它解决了标签索引问题

<input type="text" disabled="disabled" />