ajax.ext.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. module.exports = {
  2. name: 'ajax',
  3. methods: {
  4. // @extend
  5. _init: function() {
  6. $.extend($.idealforms, { _requests: {} });
  7. $.idealforms.errors.ajax = $.idealforms.errors.ajax || 'Loading...';
  8. $.extend($.idealforms.rules, {
  9. ajax: function(input) {
  10. var self = this
  11. , $field = this._getField(input)
  12. , url = $(input).data('idealforms-ajax')
  13. , userError = $.idealforms._getKey('errors.'+ input.name +'.ajaxError', self.opts)
  14. , requests = $.idealforms._requests
  15. , data = {};
  16. data[input.name] = input.value;
  17. $field.addClass('ajax');
  18. if (requests[input.name]) requests[input.name].abort();
  19. requests[input.name] = $.post(url, data, function(resp) {
  20. if (resp === true) {
  21. $field.data('idealforms-valid', true);
  22. self._handleError(input);
  23. self._handleStyle(input);
  24. } else {
  25. self._handleError(input, userError);
  26. }
  27. self.opts.onValidate.call(self, input, 'ajax', resp);
  28. $field.removeClass('ajax');
  29. }, 'json');
  30. return false;
  31. }
  32. });
  33. },
  34. // @extend
  35. _validate: function(input, rule) {
  36. if (rule != 'ajax' && $.idealforms._requests[input.name]) {
  37. $.idealforms._requests[input.name].abort();
  38. this._getField(input).removeClass('ajax');
  39. }
  40. }
  41. }
  42. };