在xsl文件中对输入字段进行Javascript验证

时间:2015-11-10 15:34:54

标签: javascript jquery xslt

我有以下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验证表示赞赏

1 个答案:

答案 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>