在AJAX调用中调用onChange方法

时间:2013-11-13 07:29:19

标签: javascript struts2

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

<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>

reult ajax jsp:

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:2)

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

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

最后但并非最不重要的是,我找不到上面的任何错误。 Plz检查你的js功能及其参考或你使用的IE版本。

答案 1 :(得分:1)

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

但是回答你的问题,你错过了executeScripts参数,默认情况下是false

来自the documentation

  

executeScripts :将执行所提取内容中的Javascript代码

这应该有效:

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

请注意,您需要将separateScripts设置为false(默认为true),以便从结果JSP中访问主JSP中定义的javascript函数,否则您需要在结果JSP中定义hideFilterSection()函数,因为它们的作用域是分开的。

  

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