123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /**
- * Public methods
- */
- module.exports = {
- addRules: function(rules) {
- var self = this;
- var $inputs = this.$form.find($.map(rules, function(_, name) {
- return '[name="'+ name +'"]';
- }).join(','));
- $.extend(this.opts.rules, rules);
- $inputs.each(function(){ self._buildField(this) });
- this.$inputs = this.$inputs
- .add($inputs)
- .each(function(){ self._validate(this, true) });
- this.$fields.find(this.opts.error).hide();
- this._inject('addRules');
- },
- getInvalid: function() {
- return this.$fields.filter(function() {
- return $(this).data('idealforms-valid') === false;
- });
- },
- focusFirstInvalid: function() {
- var firstInvalid = this._getFirstInvalid()[0];
- if (firstInvalid) {
- this._handleError(firstInvalid);
- this._handleStyle(firstInvalid);
- this._inject('focusFirstInvalid', firstInvalid);
- firstInvalid.focus();
- }
- },
- isValid: function(name) {
- if (name) return ! this.getInvalid().find('[name="'+ name +'"]').length;
- return ! this.getInvalid().length;
- },
- reset: function(name) {
- var self = this
- , $inputs = this.$inputs;
- if (name) $inputs = $inputs.filter('[name="'+ name +'"]');
- $inputs.filter('input:not(:checkbox, :radio)').val('');
- $inputs.filter(':checkbox, :radio').prop('checked', false);
- $inputs.filter('select').find('option').prop('selected', function() {
- return this.defaultSelected;
- });
- $inputs.change().each(function(){ self._resetErrorAndStyle(this) });
- }
- };
|