Dijit对话框按钮事件未执行

Dijit Dialog Button Event Not Executing

本文关键字:执行 事件 按钮 对话框 Dijit      更新时间:2023-09-26

我以编程方式创建了一个Dijit对话框 (jsfiddle)。当Dialog Show被调用时,在运行时传递按钮的id。我试图创建点击事件函数执行在运行时传递的id。

但是事件没有执行。我想知道如何将一个功能附加到对话框按钮。

<button id="show">Show Dialog</button> 

JS

require([
    "dijit/form/CheckBox",
    "dijit/dijit",
    "dijit/form/Textarea",
    "dijit/form/FilteringSelect",
    "dijit/form/TextBox",
    "dijit/form/ValidationTextBox",
    "dijit/form/DateTextBox",
    "dijit/form/TimeTextBox",
    "dijit/form/Button",
    "dijit/form/RadioButton",
    "dijit/form/Form",
    "dijit/_DialogMixin"]);
require([
    "dojo/parser",
    "dojo/_base/declare",
    "dojo/domReady!",
    "dojo/ready"],
function (parser, declare, ready, Dialog) {
    parser.parse();
    dojo.ready(function () {
        function showDialog(yesBtnId, noBtnId) {
            var dialog = new dijit.Dialog({
                title: 'Confirmation',
                content: '<table style= "width: 300px;">' +
                    '<tr>' +
                    '<th style="text-align:center; padding: 5px" colspan="2"><label>Are You Sure ?</label></th>' +
                    '</tr>' +
                    '<tr>' +
                    '<td style="text-align:center; padding: 5px"><button id=' + yesBtnId + '>Yes</button></td>' +
                    '<td style="text-align:center;padding: 5px"><button id= ' + noBtnId + '>No</button></td>' +
                    '</tr>' +
                    '</table>'
            });
            dialog.show();
        }
        var myShowBtn = {
            id: "show",
            onClick: function (evt) {
                showDialog('yesDelete', 'noDelete');
            }
        };
        dojo.query("#show").connect("onclick", myShowBtn.onClick);
        var myYesDelete = {
            id: "yesDelete",
            onClick: function (evt) {
                alert('hello its working....');
            }
        };
        dojo.query("#yesDelete").connect("onclick", myYesDelete.onClick);
    });
});

当你调用一个不存在的元素时,你试图为它添加一个事件处理程序,所以事件处理程序实际上没有被绑定,因为那时没有任何东西可以绑定它。

但是,如果你移动行:

dojo.query("#yesDelete").connect("onclick", myYesDelete.onClick);

直到showDialog()函数(将其放在dialog.show()后面),然后它将像您在这个更新的JSFiddle中看到的那样工作。