1

入力フィールドが 3 ページある TabContainer があります。各 TabPanel には、一連の ValidatorCalloutExtenders (パネル上のすべてのバリデーターに 1 つ) があります。

ページを検証すると、検証は現在のパネルに対してのみ機能します。すべての非表示の TabPanels について、そのタブが選択されたときに、すべてのバリデータ ツールチップが混乱して表示されます。

1 番目と 2 番目のタブ ページに、おおよそ次のようなボタンを配置しました。

<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 に書き直す必要がありますか? (深刻な質問...これは、ajaxControlToolkitが使用されている場合が多いWebフォームプロジェクトですが、私はそれによって制約を受け、反論されていると感じています。)

4

1 に答える 1