【问题标题】:Make input form read-only?将输入表单设为只读?
【发布时间】:2010-06-21 18:25:57
【问题描述】:

我有一堆表格,上面有很多 <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>
    });

它完成了我想要的部分功能,但您仍然可以粘贴到字段中,您仍然可以从中删除。

【问题讨论】:

    标签: javascript jquery html input


    【解决方案1】:

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

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

    您可以立即在 XSLT 中执行此操作。如果您在各处使用相同的输入,只需为其创建一个模板并在测试中使用&lt;xsl:apply-template .../&gt;

    评论后编辑

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

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

    【讨论】:

    • 实际上,我发现“只读”似乎可以工作。我不知道那里有。
    • 嘿,你知道什么,它一直在这里 :) 感谢分享!
    【解决方案2】:

    我走的是简单的路线:

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

    我不知道为什么我以前从未听说过“只读”属性。

    【讨论】:

    • 这里要注意的一点是,如果您有一个相当大的 DOM,则在此行实际执行之前,这些字段将是暂时可编辑的。
    【解决方案3】:

    只读和禁用字段之间存在差异- 只读字段的值是通过表单上传的,只读元素可以通过标签、聚焦和选择,与禁用字段不同。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2020-03-03
      相关资源
      最近更新 更多