#dojo
#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:
Обычно всплывающая подсказка исчезает после того, как фокус был перемещен на другой узел, т. е. запущен при blur
событии. В вашем случае, я думаю, это потому, что blur
событие не запущено, поскольку вы использовали клавишу ESC для закрытия диалога.
Чтобы решить эту проблему, вы можете вручную вызвать displayMessage
из dijit.form.ValidationTextBox
, чтобы скрыть всплывающую подсказку.
В вашем коде
dlg.connect(dlg, "onHide", function(){
dijit.byId('txtUserName').displayMessage(''); //Add this line to hide the tooltip
dlg.destroyRecursive();
});