3

aspx ページの PopupReference があります。asp:ddSelectOption(ドロップダウン)のように、Tridion コントロール ボタンといくつかの ASP コントロールもあります。

したがって、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)。どうすればこれを実現できるか、誰にも手がかりがありますか?

4

1 に答える 1

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(); 

};

次の方法で対処します。

  1. ドロップダウン要素を取得したら、オブジェクトとして持っていることを確認してください
  2. onselectedindexchanged を単に 'change' に変更してみてください
  3. 強いアルコール飲料:)

幸運を

于 2012-08-14T07:46:54.627 に答える