Files
OnlineJudge/static/src/js/lib/formValidation/validator/remote.js
2015-08-06 15:12:28 +08:00

49 lines
1.5 KiB
JavaScript
Executable File

/**
* remote validator
*/
(function(root, factory) {
"use strict";
// AMD module is defined
if (typeof define === "function" && define.amd) {
define("validator/remote", ["jquery", "base", "csrf"], factory);
} else {
// planted over the root!
factory(root.jQuery, root.FormValidation);
}
}(this, function ($, FormValidation, csrfHeader) {
FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
'en_US': {
remote: {
'default': ''
}
}
});
FormValidation.Validator.remote = {
validate: function(validator, $field, options) {
var dfd = new $.Deferred(), ajaxData = {};
ajaxData[options.field] = $field.val();
if ($field.val() === '')
return true;
var url = options.url;
var xhr = $.ajax({
beforeSend: csrfHeader,
url: url,
dataType: 'json',
data: ajaxData,
method: "post"
});
xhr.success(function(response) {
if (response.code == 1)
dfd.resolve($field, 'remote',{valid:true, message:options.msg});
dfd.resolve($field, 'remote',{valid:!response.data, message:options.msg});
})
.error(function(response) {
dfd.resolve($field, 'remote', {valid: false});
});
return dfd;
}
};
}));