2011-07-30 23 views
0

要求:使textfields只读 - 不禁用,用户不应该能够点击该字段,即使一次(或多或少的文本框应该像选择框一样)。当用户在按下tab时应该能够移动到下一个字段(正常行为),Internet Explorer应该是用于呈现代码的浏览器。这是我一直在做在完整只读模式下转换HTML文本框

示例代码是在这里

<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。由于

+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"/> 
3

我要说的是,如果你需要的东西,是只读的,且不能像一个表单元素,那么,你不应该使用的表单元素:只使用值作为文本:

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

这样:

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


如果必要的话,那么你就可以使用了CSS的样式呢,有边框,例如...

2

这将让你标签到每一个文本框,但他们不会让你点击它们。 使用onclick事件模糊它并设置readonly属性以防止编辑。

http://jsfiddle.net/aQvGx/

1

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

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