在 Vuejs 上启用带有 Javascript 的选项卡
Enable a Tab with Javascript on Vuejs
所以我正在使用 Vue 和 Bootstrap-Vue。
上下文:
这是一个注册页面,我有 2 个选项卡,当第一个选项卡完成后,您可以点击按钮并传递到第二个选项卡。
第二个具有 'disabled' 属性,当我单击我的按钮时,它应该启用该选项卡。
我试着做了一个javascript函数,但是好像不对。
My code is on Fiddle,这里也是代码的相关部分。
<b-tabs class = "the-tabs-group" v-model="tabIndex">
<b-tab title="Primeira Fase" active>
<div class="form-group row">
<label class="col-sm-1 col-form-label">Email:</label>
<div class="col-sm-9">
<input type="email" class="form-control " id="email" name="email">
</div>
<hr>
<label class="col-sm-1 col-form-label">Senha:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="pwd" name="pwd">
</div>
<hr>
<label class= "confirmsenha col-sm-1 col-form-label">Confirmar senha:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="cpwd" name="cpwd">
</div>
</div>
</b-tab>
<b-tab id="segundaFase" title="Segunda Fase" disabled >
<div id = "bb">
<h1>Quase lá!</h1>
<p>Loren ipsum sit amet,consecteur adisplinig elit.Etiam eget commodo nignbi phometehues</p>
</div>
</b-tab>
</b-tabs>
<div class="next">
<a>
<b-btn id="nois" class="btn-link" @click="tabIndex++; enableTab">Próxima Fase</b-btn>
</a>
</div>
<script>
new Vue({
el: '#app',
data: {
tabIndex: 0
},
methods:{
enableTab: function(){
console.log("chamou");
var tab = document.getElementById("segundaFase");
tab.removeAttribute('disabled'); }
}
})
</script>
您可以使用选项卡的禁用 属性 以另一种方式实现此选项
我将在下面介绍一些代码并解释
<div id="app">
<b-tabs>
<b-tab title="first" active>
<br>I'm the first tab
<button v-on:click="enableThirdTab">Enable third tab</button>
</b-tab>
<b-tab title="second">
<br>I'm the second tab
</b-tab>
<b-tab title="third" v-bind:disabled="tabDisabled">
<br>Im the third tab
</b-tab>
</b-tabs>
</div>
new Vue({
el:'#app',
data:function(){
return {
tabDisabled:true
}
},
methods:{
enableThirdTab:function(){
this.tabDisabled = false;
}
}
});
您可以使用 b-tab 的 属性 disabled
以编程方式启用或禁用它
所以在你的数据函数中创建一个 属性 tabDisabled
以 true 作为第一个状态并将它绑定到选项卡作为 v-bind:disabled="tabDisabled"
然后您可以在 methods:{} enableTab 中使用该方法,您需要做的就是设置 this.tabDisabled = false;
将您的属性分配给响应式数据成员
<b-tab id="segundaFase" title="Segunda Fase" :disabled=‘disabled’ >
data: {disabled:true}
在您的点击处理程序中,改变数据
onClick(){ this.disabled=!this.disabled}
您可以在组件数据中设置 activeTab
:
data: {
activeTab: 'tab1',
name:'',
email:''
},
然后 2 个简单的方法来设置 activetab 和 return 你将用来呈现你的布尔值 html :
methods: {
isActiveTab(tabId){
return this.activeTab === tabId
},
setActiveTab(tabId){
this.activeTab = tabId
}
..并为您的 :disabled
属性 按钮元素
计算
computed: {
formIsComplete(){
//here you might want to add some more adequate validation rules
return this.email.length > 0 && this.name.length > 0
}
}
Html 边 :
<div id="app">
<div class="tab" v-if="isActiveTab('tab1')">
<h2>Tab 1:</h2>
<span> Whatever content you want in tab1</span>
<input v-model="email" type="email"/><label>Email</label>
<input v-model="name" type="text"/><label>Name</label
<button @click="setActiveTab('tab2')" :disabled="!formIsComplete">
Change tab
</button>
</div>
<div class="tab" v-if="isActiveTab('tab2')">
<h2>Tab 2:</h2>
<span> Congrats you made it to Tab2</span>
</div>
</div>
所以我正在使用 Vue 和 Bootstrap-Vue。 上下文: 这是一个注册页面,我有 2 个选项卡,当第一个选项卡完成后,您可以点击按钮并传递到第二个选项卡。 第二个具有 'disabled' 属性,当我单击我的按钮时,它应该启用该选项卡。 我试着做了一个javascript函数,但是好像不对。
My code is on Fiddle,这里也是代码的相关部分。
<b-tabs class = "the-tabs-group" v-model="tabIndex">
<b-tab title="Primeira Fase" active>
<div class="form-group row">
<label class="col-sm-1 col-form-label">Email:</label>
<div class="col-sm-9">
<input type="email" class="form-control " id="email" name="email">
</div>
<hr>
<label class="col-sm-1 col-form-label">Senha:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="pwd" name="pwd">
</div>
<hr>
<label class= "confirmsenha col-sm-1 col-form-label">Confirmar senha:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="cpwd" name="cpwd">
</div>
</div>
</b-tab>
<b-tab id="segundaFase" title="Segunda Fase" disabled >
<div id = "bb">
<h1>Quase lá!</h1>
<p>Loren ipsum sit amet,consecteur adisplinig elit.Etiam eget commodo nignbi phometehues</p>
</div>
</b-tab>
</b-tabs>
<div class="next">
<a>
<b-btn id="nois" class="btn-link" @click="tabIndex++; enableTab">Próxima Fase</b-btn>
</a>
</div>
<script>
new Vue({
el: '#app',
data: {
tabIndex: 0
},
methods:{
enableTab: function(){
console.log("chamou");
var tab = document.getElementById("segundaFase");
tab.removeAttribute('disabled'); }
}
})
</script>
您可以使用选项卡的禁用 属性 以另一种方式实现此选项 我将在下面介绍一些代码并解释
<div id="app">
<b-tabs>
<b-tab title="first" active>
<br>I'm the first tab
<button v-on:click="enableThirdTab">Enable third tab</button>
</b-tab>
<b-tab title="second">
<br>I'm the second tab
</b-tab>
<b-tab title="third" v-bind:disabled="tabDisabled">
<br>Im the third tab
</b-tab>
</b-tabs>
</div>
new Vue({
el:'#app',
data:function(){
return {
tabDisabled:true
}
},
methods:{
enableThirdTab:function(){
this.tabDisabled = false;
}
}
});
您可以使用 b-tab 的 属性 disabled
以编程方式启用或禁用它
所以在你的数据函数中创建一个 属性 tabDisabled
以 true 作为第一个状态并将它绑定到选项卡作为 v-bind:disabled="tabDisabled"
然后您可以在 methods:{} enableTab 中使用该方法,您需要做的就是设置 this.tabDisabled = false;
将您的属性分配给响应式数据成员
<b-tab id="segundaFase" title="Segunda Fase" :disabled=‘disabled’ >
data: {disabled:true}
在您的点击处理程序中,改变数据
onClick(){ this.disabled=!this.disabled}
您可以在组件数据中设置 activeTab
:
data: {
activeTab: 'tab1',
name:'',
email:''
},
然后 2 个简单的方法来设置 activetab 和 return 你将用来呈现你的布尔值 html :
methods: {
isActiveTab(tabId){
return this.activeTab === tabId
},
setActiveTab(tabId){
this.activeTab = tabId
}
..并为您的 :disabled
属性 按钮元素
computed: {
formIsComplete(){
//here you might want to add some more adequate validation rules
return this.email.length > 0 && this.name.length > 0
}
}
Html 边 :
<div id="app">
<div class="tab" v-if="isActiveTab('tab1')">
<h2>Tab 1:</h2>
<span> Whatever content you want in tab1</span>
<input v-model="email" type="email"/><label>Email</label>
<input v-model="name" type="text"/><label>Name</label
<button @click="setActiveTab('tab2')" :disabled="!formIsComplete">
Change tab
</button>
</div>
<div class="tab" v-if="isActiveTab('tab2')">
<h2>Tab 2:</h2>
<span> Congrats you made it to Tab2</span>
</div>
</div>