我有一堆表单上有很多<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>
});
执行我想要的部分内容,但您仍然可以粘贴到字段中,但仍然可以从中删除。
答案 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不区分大小写,并且大多数库会为您处理。