1/* JQUERY MATH RECAPTCHA FOR ELEMENTOR */ 2jQuery(document).ready(function($) { 3 //INIT FUNCTION 4 $(function(){ 5 $('.elementor-form').ebcaptcha(); 6 }); 7 $(document).arrive(".elementor-popup-modal .elementor-form", function() { 8 $('.elementor-popup-modal .bs-math-captcha').remove(); 9 $('.elementor-popup-modal .elementor-form').ebcaptcha(); 10 }); 11 //CAPTCHA FUNCTIONS 12 (function($){ 13 jQuery.fn.ebcaptcha = function(options){ 14 15 var element = this; 16 var submitcontainer = $(this).find('.elementor-field-type-submit') 17 var submit = $(this).find('button[type=submit]'); 18 //GHOST CONTAINER FOR TRIGGERING CLICK EVENT 19 $('<div class="bs-submit-button-event"></div>').insertBefore(submit); 20 $(".bs-submit-button-event").css({'width': (submit.outerWidth() + 'px')}); 21 $(".bs-submit-button-event").css({'height': (submit.outerHeight() + 'px')}); 22 $('<div class="bs-math-captcha elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-100"><label id="bs_ebcaptchatext" class="elementor-field-label"></label><input type="text" class="elementor-field elementor-size-sm elementor-field-textual" id="bs_ebcaptchainput" required data-error="Please solve the math problem."/></div>').insertBefore(submitcontainer); 23 var input = this.find('#bs_ebcaptchainput'); 24 var label = this.find('#bs_ebcaptchatext'); 25 26 $(element).find('button[type=submit]').attr('disabled','disabled'); 27 var operators = []; 28 if(bs_math_captcha_plus_sign) { 29 operators.push( 30 { 31 sign: "+", 32 method: function(a,b){ return a + b; } 33 }); 34 } 35 if(bs_math_captcha_minus_sign) { 36 operators.push( 37 { 38 sign: "-", 39 method: function(a,b){ return a - b; } 40 }); 41 } 42 if(bs_math_captcha_multiply_sign) { 43 operators.push( 44 { 45 sign: "*", 46 method: function(a,b){ return a * b; } 47 }); 48 } 49 var selectedOperator = Math.floor(Math.random()*operators.length); 50 var randomNr1 = 0; 51 var randomNr2 = 0; 52 var totalNr = 0; 53 randomNr1 = Math.floor(Math.random()*10); 54 randomNr2 = Math.floor(Math.random()*10); 55 totalNr = operators[selectedOperator].method(randomNr1, randomNr2) 56 var texti = randomNr1+" "+operators[selectedOperator].sign+" "+randomNr2+" = "; 57 $(label).text(texti); 58 59 60 $(input).keyup(function(){ 61 62 var nr = $(this).val(); 63 if(nr==totalNr) 64 { 65 $(element).find('button[type=submit]').removeAttr('disabled'); 66 $(input).addClass('correct'); 67 $(input).removeClass('error'); 68 $('.bs-submit-button-event').css('z-index', '-1'); 69 $('#errorcaptcha').hide(); 70 $('#bs_ebcaptchainput').css('border-color', ''); 71 } 72 else{ 73 $(element).find('button[type=submit]').attr('disabled','disabled'); 74 $(input).addClass('error'); 75 $(input).removeClass('correct'); 76 $('.bs-submit-button-event').css('z-index', '9'); 77 } 78 79 }); 80 81 $(document).keypress(function(e) 82 { 83 if(e.which==13) 84 { 85 if((element).find('button[type=submit]').is(':disabled')===true) 86 { 87 e.preventDefault(); 88 return false; 89 } 90 } 91 92 }); 93 94 }; 95}) 96 (jQuery); 97});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.