better JS that does not require jQuery for GDPR : apbct-public–gdpr.js
-
// example of a better way to code. comments should make it self-evident /** * This now removes jQuery dependency, spells things correctly, and considers how badly it was orignally coded. * * * */ function apbct_gdpr__form_append_notice(){ if(!ctPublic.gdpr_forms) return; ctPublic.gdpr_forms.forEach(function(item, i, arr){ // techncally not eh best code as there could be many items returned from the class selector. // var elem = jQuery('#'+item+', .'+item); // make two separate calls and only use the positive result var elem = document.getElementById(item); if(elem == null){ elem = document.getElementsByClassName(item)[0]; } // Filter forms (should say 'when not a form') // if(!elem.nodeName.is('form')){ if( elem.nodeName != 'FORM'){ // Caldera // if(elem.find('form')[0]) if(elem.getElementsByTagName('form') != null){ elem = elem.getElementsByTagName('form')[0]; } // Contact Form 7 // else if(jQuery('.wpcf7[role=form]')[0] && jQuery('.wpcf7[role=form]').attr('id').indexOf('wpcf7-f'+item) !== -1) else if(document.querySelectorAll('.wpcf7[role=form]') != null && document.querySelectorAll('.wpcf7[role=form]')[0].getArribute('id').indexOf('wpcf7-f'+item) !== -1){ // elem = jQuery('.wpcf7[role=form]'); elem = document.querySelectorAll('.wpcf7[role=form]')[0]; } // Formidable // else if(jQuery('.frm_forms')[0] && jQuery('.frm_forms').first().attr('id').indexOf('frm_form_'+item) !== -1) else if(document.querySelectorAll('.frm_forms') != null && document.querySelectorAll('.frm_forms')[0].getArribute('id').indexOf('frm_form_'+item) !== -1){ //elem = jQuery('.frm_forms').first().children('form'); var f = document.querySelectorAll('.frm_forms')[0]; elem = f.getElementsByTagName('form')[0]; } } // Adding notice //if(elem.is('form') || elem.attr('role') == 'form'){ if(elem.nodeName == 'FORM' || elem.getAttribute('role') == 'form'){ var fragment = fragment = document.createDocumentFragment(); var input = document.createElement('input'); input.setAttribute(id, "apbct_gdpr_"+i); input.type = 'checkbox'; input.required = true; input.style.marginRight = '10px'; fragment.appendChild(input); var label = document.createElement('label'); label.innerText = ctPublic.gdpr_text; label.htmlFor = "apbct_gdpr_"+i; fragment.appendChild(label); // elem.append('<input id="apbct_gdpr_'+i+'" type="checkbox" required="required " style="margin-right: 10px;">') // // FFS!! incorrect spelling of label. did you even test this??????? // .append('<lable for="apbct_gdpr_'+i+'">'+ctPublic.gdpr_text+'</lable>'); // // also loading twice with a re-draw elm.appendChild(fragment); } }); } // jQuery(document).ready(function(){ // jQuery not needed to load it last if it is just included in the footer. apbct_gdpr__form_append_notice(); // });
Viewing 7 replies - 1 through 7 (of 7 total)
Viewing 7 replies - 1 through 7 (of 7 total)
- The topic ‘better JS that does not require jQuery for GDPR : apbct-public–gdpr.js’ is closed to new replies.