bootstrap.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. require.config({
  2. paths: {
  3. 'geetest': '../addons/geetest/js/geetest.min'
  4. }
  5. });
  6. require(['geetest'], function (Geet) {
  7. var geetInit = false;
  8. window.renderGeetest = function () {
  9. $("input[name='captcha']:visible").each(function () {
  10. var obj = $(this);
  11. var form = obj.closest('form');
  12. obj.parent()
  13. .removeClass('input-group')
  14. .html('<div class="embed-captcha"><input type="hidden" name="captcha" class="form-control" data-msg-required="请完成验证码验证" data-rule="required" /> </div> <p class="wait show" style="min-height:44px;line-height:44px;">正在加载验证码...</p>');
  15. Fast.api.ajax("/addons/geetest/index/start", function (data) {
  16. // 参数1:配置参数
  17. // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
  18. initGeetest({
  19. gt: data.gt,
  20. https: true,
  21. challenge: data.challenge,
  22. new_captcha: data.new_captcha,
  23. product: Config.geetest.product, // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
  24. width: '100%',
  25. offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
  26. }, function (captchaObj) {
  27. // 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode
  28. geetInit = captchaObj;
  29. captchaObj.appendTo($(".embed-captcha", form));
  30. captchaObj.onReady(function () {
  31. $(".wait", form).remove();
  32. });
  33. captchaObj.onSuccess(function () {
  34. var result = captchaObj.getValidate();
  35. if (result) {
  36. $('input[name="captcha"]', form).val('ok');
  37. }
  38. });
  39. captchaObj.onError(function () {
  40. geetInit.reset();
  41. });
  42. });
  43. // 监听表单错误事件
  44. form.on("error.form", function (e, data) {
  45. geetInit.reset();
  46. });
  47. return false;
  48. });
  49. });
  50. };
  51. renderGeetest();
  52. });