Задача:
Сделать так, чтобы подсказка ValidationTextBox`а отображалась не рядом с ним, а рядом с другим dom-узлом. В моем случае я хочу вместо:
получить:
Решение:
Переопределить у ValidationTextBox метод displayMessage таким образом, чтобы методу Tooltip.show() он передавал не текущий узел, а некоторый другой. Этот самый "другой" узел я вынес в отдельное свойство:
define("my/form/ValidationTextBox", [Теперь остается лишь где-то в коде установить этот самый tooltipAroundNode:
"dojo/_base/declare",
"dijit/form/ValidationTextBox",
"dijit/Tooltip"
], function(declare, ValidationTextBox, Tooltip){
var ValidationTextBoxExt;
return ValidationTextBoxExt = declare("my/form/ValidationTextBox", ValidationTextBox, {
/**
* Узел для отображения подсказки
*/
tooltipAroundNode: null,
/** * Отображает подсказку рядом с текущим элементом, * если tooltipAroundNode = null, либо с заданным * в tooltipAroundNode элементом */
displayMessage: function(/*String*/ message){
if(message && this.focused){
Tooltip.show(message, this.tooltipAroundNode==null?this.domNode:this.tooltipAroundNode, this.tooltipPosition, !this.isLeftToRight());
}else{
Tooltip.hide(this.tooltipAroundNode==null?this.domNode:this.tooltipAroundNode);
}
} });
});
require(["dijit/registry"], function(registry) {
registry.byId("my-input").set("tooltipAroundNode",registry.byId("my-button").domNode);
}
Комментариев нет:
Отправить комментарий