Вы можете использовать маленький трюк, как:
внутри вас ValidationTextBox, добавьте свойство:
var _username = new dijit.form.ValidationTextBox({
_beingChecked: false,
name : "{{ username.name }}",
type : "text",
required : true,
invalidMessage : message.invalid.username
}, "{{ username.id }}");
function fnUsernameAvailable(a) {
if (a === "" || this._beingChecked)
return false;
this._beingChecked = true;
dojo.xhrPost({
url : "{{ site_url() }}/ajax/check_username_availability",
handleAs: "json",
content : {
username : a,
csrf_libtracking : fnCsrf()
},
load : dojo.hitch(this, function(data) {
// _isAvailable = data.result; <-- is this really useful ?
this._beingChecked = false;
dojo.publish("some/topic/to/tell/widgets/it/is/done", [data.result]);
})
});
}
тогда где-нибудь в вашем коде или в вашем виджете вы делаете подписку на тему, чтобы при публикации чего-либо вы запускали функцию?