0

我有如下所示的表格,它包含各种验证文本框和过滤器选择。html:

<form dojoType="dijit.form.Form" id="Form2" action="" method="">
</form>

我正在尝试将 onchange 事件的表单连接到整个表单,但它不起作用,即如果我在过滤器选择或验证文本框中更改某些值,下面显示的事件不会触发?

有人可以在这方面帮助我吗?

var handle= dojo.connect(dijit.byId("Form2").domNode,'onchange',function()
{
    console.log("I am inside the form");
    dojo.disconnect(handle);
});
4

1 回答 1

0

假设您只在表单中使用 dijit 小部件,您可以轻松创建一个触发自定义事件的事件表单,如下所示:

define([
    "dojo/_base/declare", 
    "dojo/_base/array", 
    "dojo/Evented", 
    "dijit/registry", 
    "dijit/form/Form"
], function(declare, array, Evented, registry, Form){
    return declare([Form, Evented], {
        postCreate : function() {
            var self = this;
            this.inherited(arguments);

            // When any of my children changes, I emit a custom "change" event
            array.forEach(registry.findWidgets(self.domNode), function(childWidget){
                childWidget.onChange = function(){ 
                    self.emit("change", self.get("value"));
                };
            });
        }
    });
});

请参阅dojo/Evented文档和此处的实时示例。

于 2013-04-30T16:13:19.023 回答