我似乎无法正确连接onchange事件到dijit.form.Select部件。不过,我相信新的网络开发,所以我可以做一些完全愚蠢的(尽管,尽我可以告诉(我读过所有我能找到的文档)我没有)。我确信体类道场主题相匹配,我dojo.require()的所有我用的是小部件(和dojo.parser),仍然,虚无缥缈。我使用的代码是:

dojo.addOnLoad(function () {
    var _query = dojo.query('.toggle');
    for (var i in  _query) {
        dojo.connect(_query[i], 'onchange', function (ev) {
            console.log(ev + ' fired onchange');
        });
    }
});

在所有任何帮助,将不胜感激。

增加:挖掘更进的dijit如何呈现窗口小部件,我discoverd,当我添加的dojoType =“dijit.form.Select”属性值对我的html元素(声明这样做)的内部后,实际的dijit呈现1列两山坳表。该表的第一个元素是一个跨度(带班dijitSelectLabel)是我假设只是显示选择(或默认)的元素。它的第二个元件似乎是一个按钮呈现为向下箭头切换响应于特定的DOM事件菜单itmes的显示。同时,(我认为这是非常漂亮)的dijit实际上并不把DOM树选择选项,直到其中一个事件被触发。我看着新鲜的页面加载后的HTML的萤火权(之前我对任何点击),而第二个选项是没有在任何地方被发现。然后,当我点击箭头按钮,有一个小部件dijit.Menu,dijit的棍子一dijit.Menu到身体节点的末尾;之后我点击别的地方,菜单控件仍然是人体的lastChild,现在它只是隐而不附着在form.Select部件。结果 点击 如果真的是这样复杂的,如果所有我想要做的就是发生在这取决于项目的用户选择DOM树不同dijit.form小部件? 点击 点击 结论: 原来,这是一个资本化的问题。结果

dojo.connect(widget_obj, 'onChange', function_obj);
works,而

dojo.connect(widget_obj, 'onchange', function_obj);
doesn't。搜索结果 所以,我是正确的,我被彻底傻了。我认为,因为所有的小写版本时,把它的HTML标签将作为一个属性,即工作会道场同等处理。这是有道理的,因为dijit.form.Select没有.onchange属性,但确实有.onChange属性。 (我结束了一个。选择在.FilteringSelect坚持,因为我不知道我的用户给予任何印象,他们可以在输入一些东西。)所以,你的球员之一我给的答案(因为你俩在您的文章的onChange了,我想我只是太缺乏经验意识到的情况下要紧)?

有帮助吗?

解决方案

做dojo.connect当尝试以下方法:

  var inputEvents = [];  //Global var

  inputEvents.push(dojo.connect(dijit.byId(inputFldStr), "onChange", eventFuncObj));

存放在全局变量的连接。

其他提示

有关其他人通过网络搜索找到这个页面,你可能已经做出和我一样的错误..的复制粘贴您的标记,使得每个人都有相同的“价值”。

e.g。

<select dojoType='dijit.form.Select' onChange="fn">
<option value='foo'>Foo 1</option>
<option value='foo'>Foo 2</option>
<option value='foo'>Foo 3</option>
</select>

FN()将永远不会被调用,因为改变处理器的代码检查针对先前选定值的新值,除非它改变不发出onChange。

在你的代码连接处理程序DOM节点“的onchange”事件,不是Dojo小部件。 dojo.query回报你一个NodeList对象 - 与查询匹配的节点的集合结果 在这种情况下,它更可靠的连接到一个小部件的“的onChange”事件,作为GoinOff显示。只是有一点除了他的答案,以确保你这样做的权利点击假设这是你的HTML(在道场dijit.form.Select的更高版本已被替换dijit.form.FilteringSelect):

<input dojoType="dijit.form.FilteringSelect" id="stateInput" store="stateStore" searchAttr="name" name="state"/>

然后,你将这种方式(也可以存储在某些阵列的连接,以便能够稍后断开它,如GoinOff建议的)连接到“的onChange”:

dojo.addOnLoad (function () {
   dojo.connect(dijit.byId("stateInput"), "onChange", function(){});
}

但是又是另一回事,如果你不知道你的控件的ID,并希望使用dojo.query连接到多个部件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top