无法从XSL运行JavaScript函数

时间:2012-06-28 07:12:39

标签: javascript xslt

我在XSL文件中有一个表单元素。我希望在同一个XSL文件中有一个JavaScript函数,以便在选中复选框时启用“提交”按钮。

这是表格 -

<form action="NewUserNavigation" method="post" name="NewUserNavigationForm">
<input name="eventName" type="hidden" value="NewUserNavigationEvent"/>
<div class="sansIcon">
    <input type="checkbox" name="chk" onClick="EnableSubmit()"><xsl:apply-templates   select="content[@name='chkbox']" mode="impl_expandContent"/></input>
                </div>
<div class="buttonBarPage">
<input name="Submit" class="primary" type="submit" value="Continue" disabled="true"/>
</div>
</form>

这是它正在阅读的XML内容 -

<content name = "chkbox">
    Yes, I understand and agree to the T&C.
</content>

我遇到了javascript的问题,它给出了错误。我已经发出警报,检查是否在单击复选框时调用了该功能。

这是我正在使用的代码 -

<script type="text/javascript">
function EnableSubmit()
{
  alert("test");
  if(document.NewUserNavigationForm.chk.checked==true)
  {
    document.NewUserNavigationForm.Submit.disabled=false;
  }
  if(document.NewUserNavigationForm.chk.checked==false)
  {
    document.NewUserNavigationForm.Submit.enabled=false;
  }
}
</script>

我收到此错误....

org.xml.sax.SAXParseException: illegal top-level element

2 个答案:

答案 0 :(得分:1)

结束标记应为</script>而不是<script>

顺便说一句,您是否知道使用Saxon-CE,您可以在没有任何Javascript的情况下执行此操作?然后,您可以在样式表中编写响应用户输入的模板规则(例如按钮单击),并以任意方式修改HTML DOM,而无需使用Javascript DOM API。

答案 1 :(得分:0)

javascript函数需要包装在CDATA标记中,因为它不是有效的XML。您在CDATA中包装的任何内容都将完全按照您正在编写的文件(即html)输出。所以:

<script type="text/javascript"><![CDATA[
function EnableSubmit()
{
  alert("test");
  if(document.NewUserNavigationForm.chk.checked==true)
  {
      document.NewUserNavigationForm.Submit.disabled=false;
    }
    if(document.NewUserNavigationForm.chk.checked==false)
    {
      document.NewUserNavigationForm.Submit.enabled=false;
    }
  }
]]><script>