将dojo自动补全器连接到javascript函数



我试图在Dojo自动补全器中更改所选值时调用java脚本函数,但我无法这样做。

首先是因为标准的onchange属性在这里不起作用,因为这不是一个标准的HTML组件。

其次,我发现这个文档(http://dojotoolkit.org/reference-guide/quickstart/events.html#connecting-to-a-dom-event),它应该解决我的问题。但不知何故,我仍然无法连接到一个javascript函数。

这是一个示例页面,我试图通过它来测试。

JSP:

<s:form id="form">
    <sd:autocompleter id="try" list="sampleList"/>
</s:form>

JS文件:

dojo.connect(dojo.byId("try"),"onchange", tryAlert);
function tryAlert(){
    alert('successful');
}

我不知道我从文档中理解错了什么。

请建议。

谢谢! !

这是我最后做的。对于那些仍然被困在类似情况下的人来说,这将是有帮助的。

在jsp文件中这样做:

<s:form id="form">
    <s:hidden id="chngd"/>
    <sd:autocompleter id="try" list="sampleList" valueNotifyTopics="topic"/>
    ///////////
    //Here you can put more autocompleters if you need them , Like I needed them
    ///////////
</s:form>
在js文件中这样做:
dojo.event.topic.subscribe("topic", function(){
    dojo.byId('chngd').value='try';// I have set the value of the hidden field to desired value here....
    //whatever more you want to do....
});
//////////
//Here there would be a subscription (similar to above) for each autocompleter you have put in your jsp.
//////////

那么这里将要发生的是,无论何时自动补全器被更改,它都会通知或发布一个主题供侦听器收听。现在,java脚本中的subscribe函数将监听其各自的"主题",当该主题发布时,subscribe将执行其内部的javascript函数。

这样,每当一个自动补全被改变时,一个相应的javascript函数被调用,这样我们就有了一种——onchange="javascript function"——的效果。

如果你仍然遇到困难,请寻求帮助:)。

Ok,我猜"自动补全"的struts组件是dojo的dijit.form.FilteringSelect。您可以在http://dojotoolkit.org/api找到它的文档。在那里,打开树并遵循路径dijit/form/FilteringSelect,然后部署"Event summary"头。

您将找到小部件接受的扩展点列表(比如事件…)。正确的是"onChange"(注意大写的C)。

同样,dojo小部件可以通过dijit.byId("yourId") - dojo按id找到。byId用于常规 dom节点。

因此,要使用onChange扩展点,您应该这样做:
<s:form id="form">
    <sd:autocompleter id="try" list="sampleList">
        <script type="dojo/method" event="onChange" args="newValue">
            alert('successful');
        </script>
</s:form>

还是……如果你喜欢javascript的方式:

dojo.ready(function(){
    dijit.byId("try").onChange = function(newValue) {
        alert("Changed to new value", newValue);
    }
}   

相关内容

  • 没有找到相关文章

最新更新