diff --git a/static/src/js/config.js b/static/src/js/config.js index 3907d1c9..30f49699 100644 --- a/static/src/js/config.js +++ b/static/src/js/config.js @@ -26,8 +26,9 @@ var require = { "validator/date": "lib/formValidation/validator/date", "validator/integer": "lib/formValidation/validator/integer", "validator/between": "lib/formValidation/validator/between", - 'validator/confirm':"lib/formValidation/validator/confirm", - "validator/usernameCheck":"lib/formValidation/validator/usernameCheck", + "validator/confirm":"lib/formValidation/validator/confirm", + "validator/remoteCSRF":"lib/formValidation/validator/remoteCSRF", + "validator/emailAddress":"lib/formValidation/validator/emailAddress", //富文本编辑器 不要直接使用,而是使用上面的editor simditor: "lib/simditor/simditor", "simple-module": "lib/simditor/module", diff --git a/static/src/js/lib/formValidation/validator/remoteCSRF.js b/static/src/js/lib/formValidation/validator/remoteCSRF.js new file mode 100644 index 00000000..9cab354f --- /dev/null +++ b/static/src/js/lib/formValidation/validator/remoteCSRF.js @@ -0,0 +1,46 @@ +/** + * remoteCSRF validator + */ +(function(root, factory) { + + "use strict"; + + // AMD module is defined + if (typeof define === "function" && define.amd) { + define("validator/remoteCSRF", ["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': { + remoteCSRF: { + 'default': '' + } + } + }); + FormValidation.Validator.remoteCSRF = { + 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) { + dfd.resolve($field, 'remoteCSRF',{valid:!response.data, message:options.msg}); + }) + .error(function(response) { + dfd.resolve($field, 'remoteCSRF', {valid: false}); + }); + return dfd; + } + }; +})); diff --git a/static/src/js/lib/formValidation/validator/usernameCheck.js b/static/src/js/lib/formValidation/validator/usernameCheck.js deleted file mode 100644 index 36a77626..00000000 --- a/static/src/js/lib/formValidation/validator/usernameCheck.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * usernameCheck validator - */ -(function(root, factory) { - - "use strict"; - - // AMD module is defined - if (typeof define === "function" && define.amd) { - define("validator/usernameCheck", ["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': { - usernameCheck: { - 'default': 'Please input the same value' - } - } - }); - FormValidation.Validator.usernameCheck = { - validate: function(validator, $field, options) { - if ($field.val() == '') - return true; - return !$.ajax({ - async: false, - beforeSend: csrfHeader, - url: "/api/username_check/", - data: {username: $field.val()}, - dataType: "json", - method: "post", - }).responseJSON.data; - } - }; -})); diff --git a/static/src/js/utils/validation.js b/static/src/js/utils/validation.js index 5fe792f0..45da8f56 100644 --- a/static/src/js/utils/validation.js +++ b/static/src/js/utils/validation.js @@ -9,6 +9,7 @@ define("validation", 'validator/integer', 'validator/between', 'validator/confirm', - 'validator/usernameCheck'], + 'validator/remoteCSRF', + 'validator/emailAddress'], function () { }); \ No newline at end of file