将输入表格设为只读?

时间:2010-06-21 18:25:58

标签: javascript jquery html input

我有一堆表单上有很多<input type="text">个字段。用户现在要求我提供每个表单的“只读”版本。我会将每个字段重新编码为

<xsl:choose>
<xsl:when test="/..../permission = 'E'>
  <input ....>
</xsl:when>
<xsl:otherwise>
  ...
</xsl:otherwise>
</xsl:choose>
一团糟,但我希望有一些更优雅的东西。一位朋友建议

  $(function () {
        <xsl:if test="/.../permission != 'E'">
            $('input').keypress(function() { return false; });
        </xsl:if>
    });

执行我想要的部分内容,但您仍然可以粘贴到字段中,但仍然可以从中删除。

3 个答案:

答案 0 :(得分:3)

从您使用XSLT的事实来看,我会说您正在输出一个XHTML文档类型,那么为什么不让您正在创建的输入元素具有disabled属性?

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

您可以在XSLT中立即执行此操作。如果你在整个地方使用相同的输入,只需为它创建一个模板,并在测试中使用<xsl:apply-template .../>

评论后编辑

显然还有一个只读属性。傻:)

<input type="..." readonly="readonly" />

答案 1 :(得分:1)

我走了这条简单的路线:

       $(function () {
            <xsl:if test=".../permission != 'E'">
                $('input[type="text"').attr('readonly','readonly');
            </xsl:if>
        });

我不知道为什么我之前从未听过“readonly”属性。

答案 2 :(得分:0)

只读字段和禁用字段之间存在差异 - readonly字段的值与表单一起上传,readonly元素可以选项卡,聚焦和选择,与禁用字段不同。

此外,如果您更改直接javascript中的值,则必须使用'readOnly',而html不区分大小写,并且大多数库会为您处理。