【问题标题】:ValidatorCalloutExtender containing TabContainer/TabPanels?ValidatorCalloutExtender 包含 TabContainer/TabPanels?
【发布时间】:2011-03-02 12:10:45
【问题描述】:

我有一个包含三页输入字段的 TabContainer。每个 TabPanel 都有一组 ValidatorCalloutExtenders(面板上的每个验证器一个)。

当我验证页面时,验证仅适用于当前面板。 For all hidden TabPanels all the validator-tooltips are visible in a mess when that tab is selected.

我在第一个和第二个标签页上放了一个按钮,大致如下:

<input type="button" class="next" value="Next" onclick="Page_ClientValidate('Contact'); if(Page_IsValid) { SelectTab(1); }" />

selecttab 看起来像这样:

function SelectTab(ix)
{
    var container = $find('<%=createUserTabs.ClientID%>');
    container.set_activeTabIndex(ix);
}

仅按按钮,标签页实际上与验证一起工作。 但是当我单击选项卡而不是按钮时,地狱再次松动。

首先没有办法阻止标签切换。 其次,如果我向 OnClientActiveTabChanged="tabChanged" 添加验证,所有验证器都会在已验证的选项卡上堆积如山,因为它没有显示出来。

function tabChanged(sender, args) {
    tabIndex = sender.get_activeTabIndex();

    if (!Page_ClientValidate('Contacts')) {
        if (tabIndex != 0) {
            sender.set_activeTabIndex(0);
            Page_ClientValidate('Contacts'); //Doesn't fix the validator soup
        }

        return;
    }

有人让 ValidatorCalloutExtenders 与 TabContainer 一起工作吗?

是否值得为 ajaxControlToolkit 操心,还是应该不眨眼地重写 jQuery? (严肃的问题......这是一个 webforms 项目,如果 ajaxControlToolkit 正在使用中,但我感到受到限制和反击。)

【问题讨论】:

    标签: asp.net asp.net-ajax ajaxcontroltoolkit validation tabcontainer


    【解决方案1】:

    没关系...我这么厚。

    var getouttahere = false;
    
    function tabChanged(sender, args) {
    
        if (getouttahere) {
            return;
        }
        getouttahere = true;
    
        tabIndex = sender.get_activeTabIndex();
    
        do {
    
            sender.set_activeTabIndex(0);
            if (!Page_ClientValidate('Contact') || 0 == tabIndex) {
                break;
            }
    
            sender.set_activeTabIndex(1);
            if (!Page_ClientValidate('Delivery') || 1 == tabIndex) {
                break;
            }
    
            sender.set_activeTabIndex(2);
            if (!Page_ClientValidate('Invoicing')) {
                break;
            }
    
        } while (false);
    
        getouttahere = false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多