我在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 conetent -
<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
结束标记应</script>
而不是<script>
。
顺便问一下,你知道吗,使用Saxon-CE,你可以在没有任何Javascript的情况下做到这一点?然后,您可以在样式表中编写模板规则来响应用户输入(例如按钮单击)并以任意方式修改HTML DOM,而无需使用Javascript DOM API。
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>