| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- (function ($) {
- $.fn.bootstrapValidator.validators.remote = {
- html5Attributes: {
- message: 'message',
- url: 'url',
- name: 'name'
- },
- /**
- * Request a remote server to check the input value
- *
- * @param {BootstrapValidator} validator Plugin instance
- * @param {jQuery} $field Field element
- * @param {Object} options Can consist of the following keys:
- * - url
- * - data [optional]: By default, it will take the value
- * {
- * <fieldName>: <fieldValue>
- * }
- * - name [optional]: Override the field name for the request.
- * - message: The invalid message
- * @returns {Boolean|Deferred}
- */
- validate: function(validator, $field, options) {
- var value = $field.val();
- if (value == '') {
- return true;
- }
- var name = $field.attr('data-bv-field'), data = options.data;
- if (data == null) {
- data = {};
- }
- // Support dynamic data
- if ('function' == typeof data) {
- data = data.call(this, validator);
- }
- data[options.name || name] = value;
- var dfd = new $.Deferred();
- var xhr = $.ajax({
- type: 'POST',
- url: options.url,
- dataType: 'json',
- data: data
- });
- xhr.then(function(response) {
- dfd.resolve($field, 'remote', response.valid === true || response.valid === 'true');
- });
- dfd.fail(function() {
- xhr.abort();
- });
- return dfd;
- }
- };
- }(window.jQuery));
|