【发布时间】:2011-09-27 06:38:48
【问题描述】:
当 Dojo 自动完成器的值发生变化时,我正在尝试调用 javascript 函数。
从“onChange”属性调用javascript函数没有效果(我的意思是该函数没有被调用/执行)。
在我想要的javascript函数中:
调用 struts2 动作。
更改隐藏字段的值。
为了调用动作,我有另一种方式:
使用属性“valueNotifyTopic="topicName"”发布主题,然后我可以通过监听主题来调用操作。
但是我不能通过这种方式改变隐藏字段的值。所以我需要调用一个javascript函数
请指教
谢谢!!
编辑:
这是jsp中的代码:
<s:url id="scriptURL" action="viewContactInfo" />
<sd:div href="%{scriptURL}" listenTopics="viewContactInfo" formId="contactInfo" showLoadingText="false" preload="false">
<s:form id="contactInfo">
<sd:autocompleter autoComplete="false" name="customer" list="customerList" valueNotifyTopics="viewContactInfo"/>
<sd:autocompleter autoComplete="false" name="contact" list="contactList" valueNotifyTopics="viewContactInfo"/>
<s:hidden id="chngd" value="initial"/>
</s:form>
</sd:div>
如果我将“valueNotifyTopics='viewContactInfo'”更改为“onChange='dojo.event.topic.publish('viewContactInfo');'”,则操作“viewContactInfo”将停止调用。而同样的事情(“onChange”)与其他元素一起工作(在我项目的其他地方)。
【问题讨论】:
-
作为一个想法,我认为这可能会发生,因为 dojo 自动完成器不是 html 元素,并且 onChange 事件处理程序仅适用于 html 元素。你觉得呢?
-
使用主题是正确的方法,至于为什么它不起作用,很难用给定的东西说 - 你可以通过主题方法更改隐藏的值。
-
请发布您用于创建您遇到问题的 dojo 小部件的代码。
-
@BuffaloBuffalo 代码被包裹在 S2 自定义标签中,很有可能主题“订阅”或处理程序本身不正确。
-
请查看代码的编辑和进一步的描述。
标签: javascript autocomplete dojo struts2