2015-11-10 169 views
0

XSL文件我有以下的xsl:JavaScript驗證在輸入字段

<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(/[^[email protected]]+/, ''); 
}; 
<input type="text" id="input-field" onkeyup="validate();"/> 

中以最簡單的方式改變了xsl以上,增加的jQuery/JavaScript驗證任何幫助表示讚賞

+0

嘗試''並在JS正則表達式中添加錨'/^[a-z _] $/i.test(keyChar)' – Tushar

+0

@Tushar調查此問題。請注意,它需要爲IE8和一些老的瀏覽器,如Mozilla 4 – topcat3

回答

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="[[email protected]]+" /> 
</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="[[email protected]]+"> 
 
    </form> 
 
    </body> 
 
</html>

+0

工作,這看起來非常好。感謝您的幫助,但我查了模式屬性,它不適用於IE8 – topcat3

+0

@ topcat3:你可以使用JavaScript框架? –

+1

如果是這樣,簽出:jQuery工具驗證器(http://jquerytools.github.io/documentation/validator/index.html)。您只需鏈接庫並添加'$(「#myform」)。validator();'其中myform是表單標識。 –