包含TabContainer / TabPanels的ValidatorCalloutExtender?

我有一个带有三页输入字段的TabContainer。对于每个TabPanel,都有一组ValidatorCalloutExtenders(一个用于面板上的每个验证器)。 当我验证页面时,验证仅适用于当前面板。对于所有隐藏的TabPanel,当选中该选项卡时,所有验证器工具提示都会在混乱中可见。 我在第一个和第二个标签页上放了一个按钮,看起来大致如下:
<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;
    }
有没有人使用TabContainer使用ValidatorCalloutExtenders? 是否值得用ajaxControlToolkit打扰,还是应该重写jQuery而不眨眼? (严肃的问题......这是一个webforms项目,如果ajaxControlToolkit正在使用中,那么很多,但我感觉受到约束和反击。)     
已邀请:
没关系......我太厚了。
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;
}
    

要回复问题请先登录注册