12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- module.exports = {
- name: 'ajax',
- methods: {
- // @extend
- _init: function() {
- $.extend($.idealforms, { _requests: {} });
- $.idealforms.errors.ajax = $.idealforms.errors.ajax || 'Loading...';
- $.extend($.idealforms.rules, {
- ajax: function(input) {
- var self = this
- , $field = this._getField(input)
- , url = $(input).data('idealforms-ajax')
- , userError = $.idealforms._getKey('errors.'+ input.name +'.ajaxError', self.opts)
- , requests = $.idealforms._requests
- , data = {};
- data[input.name] = input.value;
- $field.addClass('ajax');
- if (requests[input.name]) requests[input.name].abort();
- requests[input.name] = $.post(url, data, function(resp) {
- if (resp === true) {
- $field.data('idealforms-valid', true);
- self._handleError(input);
- self._handleStyle(input);
- } else {
- self._handleError(input, userError);
- }
- self.opts.onValidate.call(self, input, 'ajax', resp);
- $field.removeClass('ajax');
- }, 'json');
- return false;
- }
- });
- },
- // @extend
- _validate: function(input, rule) {
- if (rule != 'ajax' && $.idealforms._requests[input.name]) {
- $.idealforms._requests[input.name].abort();
- this._getField(input).removeClass('ajax');
- }
- }
- }
- };
|