我有一个aspx页面PopupReference。我有Tridion控制按钮和几个asp控件,如asp:ddSelectOption
(下拉列表)。
所以在Popupreference.js中我们正在为Tridion按钮创建事件处理程序,我正在尝试为我的asp控件创建相同的内容,如下所示:
这是Tridion按钮:
c.InsertButton = $controls.getControl($("#InsertButton"),
"Tridion.Controls.Button");
这是我的下拉列表:
c.ddSelectOption = $("#ddSelectOption");
tridion按钮的事件处理程序:
$evt.addEventHandler(c.InsertButton, "click", this.getDelegate(this._execute));
我的下拉列表的事件处理程序:
$evt.addEventHandler(c.ddSelectOption, "onselectedindexchanged",
this.getDelegate(this._ondropdownitemchanged));
console.log('eventhandler created');
我正在调用函数:
RTFExtensions.Popups.PopupReference.prototype._ondropdownitemchanged =
function PopupReference$_ondropdownitemchanged(event) {
Console.log('Initializing inside dropdown...');
};
但我无法在任何地方看到最后一个日志,我认为它没有进入函数ondropdownitemchanged(event)
。有没有人知道如何才能实现这一目标?
答案 0 :(得分:8)
我怀疑您的onselectedindexchanged
事件需要是change
?
我使用下拉列表实现了类似的功能,以下是我的代码中的部分内容。我希望这可以帮助您找到解决方案:
1)在html / aspx页面中:
<select id="systemDD"></select><label for="systemDD">Select a system</label>
2)在你的JavaScript中:
var p = this.properties;
var c = p.controls;
// the the drop down items
c.SystemDropDown = $("#systemDD");
添加事件处理程序:
$evt.addEventHandler(c.SystemDropDown, "change",
this.getDelegate(this._systemDropDownChanged));
方法:
EditorName.prototype._systemDropDownChanged =
function EditorName$Extensions$EditorName$_systemDropDownChanged() {
var p = this.properties;
var c = p.controls;
// get the selected system value
var selectedSystem = $j(c.SystemDropDown).val();
};
我会通过以下方式解决这个问题: