2

我有一个下拉列表,并使用第一个下拉列表中的选定值制作另一个下拉列表。

<s:select name="selectedList" list="list" listKey="name" listValue="name"
      onchange="showList(this);return false;"/>

     <s:url id="server_url" action="cls/ListAction"/> 
     <sx:div showLoadingText="false" id="details" href="ListAction" theme="ajax"
         listenTopics="show_server_list" formId="config_frm"><sx:div>

和结果ajax jsp:

<s:select name="selectedApplication" 
          list="applications" listKey="name" 
          listValue="name" onchange="javascript:hideFilterSection();"/>  

这里我有onchange方法hideFilterSection,这不是调用...

所以我有两个下拉列表,第一个和第二个(ajax),并且基于第二个下拉值我需要在 jsp 中隐藏一些东西,但是第二个下拉 onchange 没有调用,请让我知道如何实现它

提前致谢

4

2 回答 2

2

首先,sx: 标签在 IE 10 或 11 中不起作用。如果您仍想在 IE 10+ 中使用它,那么您需要meta http-equiv="X-UA-Compatible" content="IE=9"在标头中使用它,并且它必须是标头中的第一个元标记。它会告诉 IE 使用 IE 9 兼容模式。

其次,确保包含或相关的 js 文件hideFilterSection()在查询页面中,而不是在 ajax 结果页面中。

最后但并非最不重要的一点是,我在上面找不到任何错误。请检查您的 js 函数及其引用或您使用的 IE 版本。

于 2014-01-08T10:10:34.637 回答
1

我建议您避免使用旧的、有缺陷的内置 Dojo 版本,并迁移到 Struts2-jQuery 插件,甚至更好地迁移到原始 jQuery。

但是谈到您的问题,您缺少executeScripts参数,这是false默认情况下的。

文档中

executeScripts : 获取内容中的 Javascript 代码将被执行

这应该有效:

<sx:div executeScripts = "true"
       showLoadingText = "false" 
                    id = "details" 
                  href = "ListAction" 
                 theme = "ajax"
          listenTopics = "show_server_list" 
                formId = "config_frm" >
</sx:div>  

请注意,您需要设置separateScriptsfalse(默认为true),以便从结果 JSP 访问主 JSP 中定义的 javascript 函数,否则您需要在hideFilterSection()结果 JSP 中定义该函数,因为它们的范围将被分开。

单独脚本:在单独的范围内运行脚本,每个标签都是唯一的

于 2013-11-13T09:17:03.343 回答