如何在dojo中将onchange事件添加到“form”?

时间:2013-04-30 11:59:00

标签: javascript dojo

我已经形成了如下所示的内容,它包含各种验证文本框和过滤器选择。 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);
});

1 个答案:

答案 0 :(得分: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文档和实例here