当 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:)

TextInput

dojo ie9 destoryRecursive on form

如何实现类似于 jQuery UI 自动完成的 Dojo 自动完成?

将 Dojo 安装到 Aptana

完成按钮单击时调用 UITextField 方法