1

http://www.asp.net/web-forms/tutorials/ajax-control-toolkit/getting-started/creating-a-custom-ajax-control-toolkit-control-extender-vb上的教程给出了一个很好的例子基于文本框和按钮的自定义扩展程序。基本上,该按钮保持禁用状态,直到在文本框中输入至少一个字符。如果从文本框中删除文本,则该按钮将再次被禁用。

我正在尝试修改它,以便扩展器基于文本框和面板。我再次希望面板在文本框中出现文本时变得可见。

这就是我修改代码的方式...

Type.registerNamespace('CustomExtenders');
CustomExtenders.ShowHidePanelBehavior = function (element) {
    CustomExtenders.ShowHidePanelBehavior.initializeBase(this, [element]);
    this._targetPanelIDValue = null;
} 

CustomExtenders.ShowHidePanelBehavior.prototype = {
    initialize: function () {
        CustomExtenders.ShowHidePanelBehavior.callBaseMethod(this, 'initialize');

        // Initalization code 
        $addHandler(this.get_element(), 'keyup',
        Function.createDelegate(this, this._onkeyup));
        this._onkeyup();
    },

    dispose: function () {
        // Cleanup code  

        CustomExtenders.ShowHidePanelBehavior.callBaseMethod(this, 'dispose');
    },

    // Property accessors  
    // 
    get_TargetPanelID: function () {
        return this._targetPanelIDValue;
    },

    set_TargetPanelID: function (value) {
        this._targetPanelIDValue = value;
    },

    _onkeyup: function () {

       var e = $get(this._targetPanelIDValue);
        if (e) {
            var visibility = ("" == this.get_element().style.value);
            e.visibility = 'visible';
        }
    }

}

CustomExtenders.ShowHidePanelBehavior.registerClass('CustomExtenders.ShowHidePanelBehavior', Sys.Extended.UI.BehaviorBase);

运行时面板不会出现。不会产生错误。

我哪里错了……

4

1 回答 1

1

试试这个代码:

_onkeyup: function () {
    var panel = $get(this.get_TargetPanelID());
    if (panel) {
        var visibilityValue = ("" == this.get_element().value) ? "hidden" : "visible";
        panel.style.visibility = visibilityValue;
    }
}
于 2012-07-19T15:04:58.780 回答