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