我在Laravel上有一个复杂的视图,有很多选项卡和表单,用户可以在选项卡上导航并在每个选项卡上执行各种表单提交,在提交后控制器返回具有当前选项卡变量的相同视图,看起来像这样:
...Controller actions...
return view("store.tesla.user.components")
->with('tab', '3');
每个标签都有一个ID,所以当我回到我的视图时,我只是搜索活动标签并使用jQuery激活:
var tb_active = <?php echo $tab; ?>
$('#'+tb_active).addClass('active');
实际上它有效,但我觉得混合PHP + JS特别使用Laravel框架看起来很脏,看起来做得不好,所以有我的问题:
还有另一种方法可以做得更好或更简单吗?
我的观点极其庞大,而且我有很多css类,如果我将代码复制到那里会很麻烦,所以我将带有引导选项卡的codepen分叉以便更好地显示:)
https://codepen.io/Troyer/pen/MbGQPJ
HTML
<div class="container"><h1>Bootstrap tab panel example (using nav-pills) </h1></div>
<div id="exTab1" class="container">
<ul class="nav nav-pills">
<li class="active">
<a href="#1a" data-toggle="tab">Overview</a>
</li>
<li><a href="#2a" data-toggle="tab">Using nav-pills</a>
</li>
<li><a href="#3a" data-toggle="tab">Applying clearfix</a>
</li>
<li><a href="#4a" data-toggle="tab">Background color</a>
</li>
</ul>
<div class="tab-content clearfix">
<div class="tab-pane active" id="1a">
<h3>Content's background color is the same for the tab</h3>
</div>
<div class="tab-pane" id="2a">
<h3>We use the class nav-pills instead of nav-tabs which automatically creates a background color for the tab</h3>
</div>
<div class="tab-pane" id="3a">
<h3>We applied clearfix to the tab-content to rid of the gap between the tab and the content</h3>
</div>
<div class="tab-pane" id="4a">
<h3>We use css to change the background color of the content to be equal to the tab</h3>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
CSS
body {
padding : 10px ;
}
#exTab1 .tab-content {
color : white;
background-color: #428bca;
padding : 5px 15px;
}
#exTab2 h3 {
color : white;
background-color: #428bca;
padding : 5px 15px;
}
/* remove border radius for the tab */
#exTab1 .nav-pills > li > a {
border-radius: 0;
}
/* change border radius for the tab , apply corners on top*/
#exTab3 .nav-pills > li > a {
border-radius: 4px 4px 0 0 ;
}
#exTab3 .tab-content {
color : white;
background-color: #428bca;
padding : 5px 15px;
}
感谢您的时间。
答案 0 :(得分:1)
你试过隐藏的字段吗?您可以通过读取隐藏值来设置该选项卡,如:
$( ".selector" ).tabs({ active: $('#your-hidden-fiel').val() });
请参阅full example。
答案 1 :(得分:1)
在内容部分下面的js中创建一个数组
var pagedefaults = {
activetab: "{{ $activetab }}",
};
此处$activetab
来自您的控制器。现在,您可以在javascript中使用pagedefaults.activetab
等活动标签值,并激活标签。
这也可以用于本地化和Ajax路由。