当 Dojo 自动完成器的值改变时调用 java-script 函数
Posted
技术标签:
【中文标题】当 Dojo 自动完成器的值改变时调用 java-script 函数【英文标题】:Calling a java-script function when value of a Dojo auto-completer changes 【发布时间】: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 自定义标签中,很有可能主题“订阅”或处理程序本身不正确。 请查看代码的编辑和进一步的描述。 【参考方案1】:我已经为这个问题启动了另一个线程。
我想出了解决方案并在此处发布了答案:
Cannot find a way to pass a hidden value to the action file
希望这会有所帮助!
【讨论】:
以上是关于当 Dojo 自动完成器的值改变时调用 java-script 函数的主要内容,如果未能解决你的问题,请参考以下文章
当用户位置改变时调用 mapView(_:viewFor:)
dojo ie9 destoryRecursive on form