使用ESC键关闭Dialog后,Dojo ValidationTextbox错误工具提示仍保留在页面上

时间:2011-06-07 13:26:29

标签: dojo

我正在使用 Dojo 1.5,主题Claro。 我有一个dojo对话框,其中包含一个dojo表单,一个ValidationTextbox和一个提交按钮。 如果文本框有任何类型的错误,则会在其旁边显示显示消息的工具提示。 现在,如果显示错误工具提示,当我按下ESC键时,对话框将关闭,但工具提示仍保留在页面上。

以下是我用于addNewUser.html对话框的代码:

<form id="formAddUser" dojoType="dijit.form.Form">
    <input  type="text" id="txtUserName" style="width: 200px"
            dojoType="dijit.form.ValidationTextBox"
            required="true"
            regExp="[a-zA-Z0-9 \._-]{3,15}"
            invalidMessage="Error message"
            missingMessage="User Name is required."
            trim="true"></input>
    <div dojoType="dijit.form.Button" onClick="dijit.byId('dlgAddUser').hide();">Cancel</div>
</form>

以下是我用来打开对话框的代码:

function ShowAddUserDialog()
{
    dojo.require("dijit.Dialog");
    dojo.require("dijit.form.ValidationTextBox");
    dojo.require("dijit.form.Form");
    dojo.require("dijit.form.Button");

    var dlg = dijit.byId("dlgAddUser");
    if (dlg == null)
        dlg = new dijit.Dialog({
            id : "dlgAddUser",
            autofocus: false
        });

    dlg.connect(dlg, "onHide", function(){ 
            dlg.destroyRecursive();
        });

    dlg.set("href", "addNewUser.html");
    dlg.set("style", "width: 370px;");
    dlg.set("title", "Add New User");
    dlg.connect(dlg, "onLoad", function(){ 
        dijit.byId("txtUserName").focus();
    });

    dlg.show();
}

对这个问题有任何想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

通常,在将焦点移动到另一个节点后工具提示消失,即在blur事件上触发。在你的情况下,我认为这是因为你没有触发blur事件,因为你使用ESC键来关闭对话框。

要解决此问题,您可以手动调用displayMessage的{​​{1}}来隐藏工具提示。

在你的代码中

dijit.form.ValidationTextBox