From 34ccdd5e0e285dd8bb92ba6bb4fedbf372d58668 Mon Sep 17 00:00:00 2001 From: sxw Date: Wed, 5 Aug 2015 19:38:28 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BB=BF=E7=85=A7=E4=BB=A3=E7=A0=81=E9=87=8D?= =?UTF-8?q?=E5=86=99=E4=BA=86=E5=8E=9FusernameCheck=E7=9A=84validator?= =?UTF-8?q?=E3=80=82=E9=87=8D=E5=91=BD=E5=90=8D=E4=B8=BAremoteCSRF?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E4=BD=BF=E7=94=A8ajax=E5=BC=82?= =?UTF-8?q?=E6=AD=A5=E5=90=91=E6=9C=8D=E5=8A=A1=E5=99=A8=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=94=AF=E4=B8=80=E6=80=A7=E3=80=82=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=B8=BAurl=EF=BC=9A=E8=AF=B7=E6=B1=82=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=EF=BC=8Cfield=EF=BC=9A=E5=90=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E5=8F=91=E9=80=81=E7=9A=84=E8=A1=A8=E7=A4=BA=E7=AC=A6?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=EF=BC=9B=202.=E6=B7=BB=E5=8A=A0=E4=BA=86emai?= =?UTF-8?q?lAddress=E7=9A=84validator=E7=9A=84requires.js=E7=9A=84config.?= =?UTF-8?q?=20[ci=20skip]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/src/js/config.js | 5 +- .../formValidation/validator/remoteCSRF.js | 46 +++++++++++++++++++ .../formValidation/validator/usernameCheck.js | 37 --------------- static/src/js/utils/validation.js | 3 +- 4 files changed, 51 insertions(+), 40 deletions(-) create mode 100644 static/src/js/lib/formValidation/validator/remoteCSRF.js delete mode 100644 static/src/js/lib/formValidation/validator/usernameCheck.js 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