Invalidace snipetu a tabs od Twitter Bootstrap

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
czm4rty
Člen | 29
+
0
-

Zdravím, potřeboval bych poradit, jak při invalidaci formuláře zůstat na stejné záložce. (tab je součástí formuláře)

Používám nette.ajax.js a tabs od Twitter bootstrap


{snippet form}
<ul id="myTab" class="nav nav-tabs">
       <li class="active"><a href="#home" data-toggle="tab">Home</a></li>
       <li><a href="#profile" data-toggle="tab">Profile</a></li>
</ul>
{control myForm}

{/snippet}

Editoval czm4rty (27. 8. 2013 22:02)

iguana007
Člen | 970
+
0
-

Píše se to přímo v dokumentaci bootstrapu, na kterou odkazuješ:

You can activate individual tabs in several ways:

$('#myTab a[href="#profile"]').tab('show'); // Select tab by name
$('#myTab a:first').tab('show'); // Select first tab
$('#myTab a:last').tab('show'); // Select last tab
$('#myTab li:eq(2) a').tab('show'); // Select third tab (0-indexed)

Takže si při té invalidaci ještě do template předej, který tab se má aktivovat a spusť některý z výše uvedených Javascript kódů, který bude odpovídat tvé konkrétní potřebě.

czm4rty
Člen | 29
+
0
-

Ahoj,ještě bych se chtěl zeptat na radu, jak při invalidaci předat aktuální tab?

// Edit

přišel jsem na toto řešení:

    $.nette.ext('keepActiveTab', {
        before: function(xhr, settings) {
            if (settings.nette && settings.nette.isSubmit) {
                var el = $('#form-tabs li.active');
                this.activeTab = el.parent().children().index(el);
            }
        },
        success: function() {
            if (this.activeTab) {
                $('#form-tabs li:eq('+this.activeTab+') a').tab('show');
            }
        }
    });

Editoval czm4rty (28. 8. 2013 15:11)