表單驗證無效可能的原因:
- bootstrapValidator中fields的元素對應的是表單<input/>標簽的name屬性,而不是id
- 如果按鈕是普通button需要在點擊事件加入
$('#formID').data('bootstrapValidator').validate();
表單驗證的其他問題:
- 表單中使用bootstrap daterangepicker組件,即使選了日期也還是會被判斷為空捺氢,需要加入監(jiān)聽事件
$('#datepicker').datetimepicker({
.....
}).on('changeDate', function (e) {
$('#formSearch').bootstrapValidator('revalidateField', 'date');
});
- 明明沒有驗證的字段卻被驗證了
image.png
因為這兩個輸入框在同一個<div class="form-group"
颊埃,修改為
<form id="formSearch" class="form-horizontal">
<div class="form-group col-sm-7" style="margin-top: 15px">
<label class="control-label col-sm-3" for="txt_search_statu">按時間</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="date" id="datepicker" format="yyyy-mm-dd ">
</div>
</div>
<div class="form-group col-sm-5" style="margin-top: 15px">
<label class="control-label col-sm-3" for="txt_search_statu">按還款類型</label>
<div class="col-sm-3">
<select class="form-control" id="repay_select">
<option value="">請選擇</option>
</select>
</div>
<div class="col-sm-2" style="text-align: left;">
<button type="button" style="margin-left: 50px" id="btn_search"
class="btn btn-primary">查詢</button>
</div>
</div>
</form>
表單提交前的驗證+驗證通過提交
$('#form_data').bootstrapValidator({
message: '這個值沒有被驗證',
feedbackIcons: {
//valid: 'glyphicon glyphicon-ok',
//invalid: 'glyphicon glyphicon-remove',
//validating: 'glyphicon glyphicon-refresh'
},
fields: {
amount:{
validators:{
notEmpty: {message: '金額不能為空'},
numeric: {message: '金額只能輸入數(shù)字'}
}
},
copyWriter: {
message: '用戶名還沒有驗證',
validators: {
stringLength: {
min: 0,
max: 10,
message: '長度最多10位'
}
}
},
Confirm: {
message: '密碼重復還沒有驗證',
validators: {
notEmpty: {
message: '密碼重復不能為空'
},
stringLength: {
min: 6,
max: 16,
message: '密碼長度在6到16之間'
},
identical: {
field: 'Password',
message: '兩次密碼不同請重新輸入'
}
}
}
}
}).on('success.form.bv', function (e) {
// Prevent form submission
e.preventDefault();
// Get the form instance
var $form = $(e.target);
// Get the BootstrapValidator instance
var bv = $form.data('bootstrapValidator');
// Use Ajax to submit form data
$.post("${ctx}/fee/update.shtml", $form.serialize(), function (data) {
if ($.parseJSON(data)== "success") {
$('#editModal').modal('hide');
$('#OperatelistTable').bootstrapTable('refresh');
$('#feetable').bootstrapTable('refresh');
}
else {
alert(data);
}
});
});