// Class definition
var KTFormWidgetsValidation = function () {
// Private functions
var validator;
var _initWidgets = function() {
// Initialize Plugins
// Datepicker
$('#kt_datepicker').datepicker({
todayHighlight: true,
templates: {
leftArrow: '',
rightArrow: ''
}
}).on('changeDate', function(e) {
// Revalidate field
validator.revalidateField('date');
});
// Datetimepicker
$('#kt_datetimepicker').datetimepicker({
pickerPosition: 'bottom-left',
todayHighlight: true,
autoclose: true,
format: 'yyyy.mm.dd hh:ii'
});
$('#kt_datetimepicker').change(function() {
// Revalidate field
validator.revalidateField('datetime');
});
// Timepicker
$('#kt_timepicker').timepicker({
minuteStep: 1,
showSeconds: true,
showMeridian: true
});
$('#kt_timepicker').change(function() {
// Revalidate field
validator.revalidateField('time');
});
// Daterangepicker
$('#kt_daterangepicker').daterangepicker({
buttonClasses: ' btn',
applyClass: 'btn-primary',
cancelClass: 'btn-light-primary'
}, function(start, end, label) {
var input = $('#kt_daterangepicker').find('.form-control');
input.val( start.format('YYYY/MM/DD') + ' / ' + end.format('YYYY/MM/DD'));
// Revalidate field
validator.revalidateField('daterangepicker');
});
// Bootstrap Switch
$('[data-switch=true]').bootstrapSwitch();
$('[data-switch=true]').on('switchChange.bootstrapSwitch', function() {
// Revalidate field
validator.revalidateField('switch');
});
// Bootstrap Select
$('#kt_bootstrap_select').selectpicker();
$('#kt_bootstrap_select').on('changed.bs.select', function() {
// Revalidate field
validator.revalidateField('select');
});
// Select2
$('#kt_select2').select2({
placeholder: "Select a state",
});
$('#kt_select2').on('change', function(){
// Revalidate field
validator.revalidateField('select2');
});
// Typeahead
var countries = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: HOST_URL + '/api/?file=typeahead/countries.json'
});
$('#kt_typeahead').typeahead(null, {
name: 'countries',
source: countries
});
$('#kt_typeahead').bind('typeahead:select', function(ev, suggestion) {
// Revalidate field
validator.revalidateField('typeahead');
});
}
var _initValidation = function () {
// Validation Rules
validator = FormValidation.formValidation(
document.getElementById('kt_form'),
{
fields: {
date: {
validators: {
notEmpty: {
message: 'Date is required'
}
}
},
daterangepicker: {
validators: {
notEmpty: {
message: 'Daterange is required'
}
}
},
datetime: {
validators: {
notEmpty: {
message: 'Datetime is required'
}
}
},
time: {
validators: {
notEmpty: {
message: 'Time is required'
}
}
},
select: {
validators: {
notEmpty: {
message: 'Select is required'
}
}
},
select2: {
validators: {
notEmpty: {
message: 'Select2 is required'
}
}
},
typeahead: {
validators: {
notEmpty: {
message: 'Typeahead is required'
}
}
},
switch: {
validators: {
notEmpty: {
message: 'Typeahead is required'
}
}
},
markdown: {
validators: {
notEmpty: {
message: 'Typeahead is required'
}
}
},
},
plugins: {
trigger: new FormValidation.plugins.Trigger(),
// Validate fields when clicking the Submit button
submitButton: new FormValidation.plugins.SubmitButton(),
// Submit the form when all fields are valid
defaultSubmit: new FormValidation.plugins.DefaultSubmit(),
// Bootstrap Framework Integration
bootstrap: new FormValidation.plugins.Bootstrap({
eleInvalidClass: '',
eleValidClass: '',
})
}
}
);
}
return {
// public functions
init: function() {
_initWidgets();
_initValidation();
}
};
}();
jQuery(document).ready(function() {
KTFormWidgetsValidation.init();
});