我有以下xsl:
<xsl:template match="attribute[controlType='TextBox']">
<input style="width:180pt" type="input" value="">
<xsl:attribute name="id">fldCsXML_<xsl:value-of select="name"/></xsl:attribute>
<xsl:attribute name="name">fldCsXML_<xsl:value-of select="name"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="data"/></xsl:attribute>
</input>
</xsl:template>
我想对值部分进行javascript验证,不允许使用符号。只是为了允许数字或字母。
也许jquery类似于:
try bellow script this will not allow special charter # $ % ^ & * ( )
function validate() {
var element = document.getElementById('input-field');
element.value = element.value.replace(/[^a-zA-Z0-9@]+/, '');
};
<input type="text" id="input-field" onkeyup="validate();"/>
任何帮助以最简单的方式更改上面的xsl并添加jquery / javascript验证表示赞赏
答案 0 :(得分:1)
所以你可以这样做:
给出输入文件......
<t>
<attribute>
<controlType>TextBox</controlType>
<name>some-name</name>
<data>some-datum</data>
<id>input-field</id>
<width-on-form>180</width-on-form>
</attribute>
</t>
...应用XSLT 2.0样式表...
<xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="html" version="5" encoding="UTF-8" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<html>
<head>
<title>Some form</title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="t">
<form>
<xsl:apply-templates />
</form>
</xsl:template>
<xsl:template match="attribute[controlType eq 'TextBox']">
<input type="text" id="{id}" name="{name}" style="width:{width-on-form}pt" value="{data}" pattern="[a-zA-Z0-9@]+" />
</xsl:template>
</xsl:transform>
...将产生输出......
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Some form</title>
</head>
<body>
<form>
<input
type="text"
id="input-field"
name="some-name"
style="width:180pt"
value="some-datum"
pattern="[a-zA-Z0-9@]+">
</form>
</body>
</html>