我已经使用创建了一个向导BootstrapWizard
,但我需要在保存输入之前验证输入。在我填写第一个选项卡的那一刻,我实际上无法转到下一个选项卡,因为该valid()
方法将返回 false。
该valid()
方法的结果是正确的,因为其他选项卡上还有其他输入,但我无权访问该选项卡控件,因为我在第一个选项卡上。
为了澄清,我创建了一个提琴手
本质上,当您填写第一个选项卡,然后单击下一个按钮时,您将收到false
来自valid()
,因为未填写下一个选项卡中存在的所需控件,但我无法填写它。
有没有办法解决这个问题?
代码:
<div class="wizard-container">
<form id="member-form" method="get" action="" class="form-horizontal">
<div class="card card-wizard card-wizard-borderless active" data-color="rose">
<div class="wizard-navigation">
<ul>
<li><a href="#tab1" data-toggle="tab">First</a></li>
<li><a href="#tab2" data-toggle="tab">Second</a></li>
<li><a href="#tab3" data-toggle="tab">Third</a></li>
</ul>
</div>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<div class="control-group">
<label class="control-label" for="email">Email</label>
<div class="controls">
<input type="text" id="emailfield" name="first_name" class="control-form">
</div>
</div>
<div class="control-group">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input type="text" id="namefield" name="last_name" class="control-form">
</div>
</div>
</div>
<div class="tab-pane" id="tab2">
<div class="control-group">
<label class="control-label" for="url">URL</label>
<div class="controls">
<input type="text" id="urlfield" name="state" class="control-form">
</div>
</div>
</div>
<div class="tab-pane" id="tab3">
3
</div>
<div class="card-footer">
<div class="mr-auto">
<input type="button" class="btn btn-previous btn-fill btn-default btn-wd disabled" name="previous" value="previous">
</div>
<div class="ml-auto">
<input type="button" class="btn btn-next btn-fill btn-rose btn-wd" name="next" value="next">
<input type="button" id="save-member" class="btn btn-finish btn-fill btn-rose btn-wd" name="finish" value="save" style="display: none;">
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
</form>
</div>
$(document).ready(function() {
$('#member-form').validate({
ignore: '.ignore',
rules: {
first_name: "required",
last_name: "required",
state: "required"
}
});
$('.card-wizard').bootstrapWizard({
'tabClass': 'nav nav-pills',
'nextSelector': '.btn-next',
'previousSelector': '.btn-previous',
onNext: function(tab, navigation, index) {
let valid = $('#member-form').valid();
if (!valid) {
return false;
}
}
});
});