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
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
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
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)