Files
AtomicOld/js/sxValidator.js

65 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2026-02-14 19:34:54 +03:00
function sxValidator(opts){
var self = this;
this.valid = false;
this.options = opts;
this.$form = typeof opts.$el == 'string' ? $(opts.$el) : opts.$el;
this.init = function(){
this.$form.submit(function(e){
if(self.valid){
//if(this.$form.hasClass('_preorder')) yandexReachGoal('zakazkorzina');
return true;
}
e.preventDefault();
self.validate();
});
this.$form.on('click keyup', '.input-error', function(){
self.removeError($(this));
});
}
this.validate = function(){
var flag = true;
this.$form.find('[data-format]').each(function(){
var $input = $(this);
var val = $input.val();
var re = new RegExp($input.data('format'));
if(re.test(val)) return;
var msg = $input.data('notice') ? $input.data('notice') : 'Это поле необходимо заполнить';
self.showError($input, msg);
flag = false;
return false;
});
if(flag){
this.valid = true;
this.$form.submit();
}
}
this.showError = function($el, msg){
$el.addClass('input-error').parents('.form-group').addClass('has-error');
$el.popover({
html:true,
content: msg,
placement: 'bottom'
});
$el.popover('show');
$el.focus();
}
this.removeError = function($el){
$el.removeClass('input-error').parents('.form-group').removeClass('has-error');
$el.popover('destroy');
}
var __construct = function(that) {
that.init();
}(this);
}