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)