1(function($) { 2 "use strict"; 3 $( document ).ready( function () { 4 jQuery( document ).on( 'elementor/popup/show', () => { 5 $( ".elementor-form" ).each(function( index ) { 6 var form = $(this).closest(".elementor-widget-container"); 7 elementor_conditional_logic_load(form); 8 }); 9 } ); 10 window.addEventListener( 'elementor/frontend/init', () => { 11 $( ".elementor-form" ).each(function( index ) { 12 var form = $(this).closest(".elementor-widget-container"); 13 elementor_conditional_logic_load(form); 14 }); 15 } ); 16 $("body").on("change",".elementor-form input,.elementor-form select,.elementor-form textarea",function(e){ 17 var form = $(this).closest(".elementor-widget-container"); 18 elementor_conditional_logic_load(form); 19 }) 20 $("input").on("done_load_repeater",function(e,item){ 21 $( ".elementor-form" ).each(function( index ) { 22 var form = $(this).closest(".elementor-widget-container"); 23 elementor_conditional_logic_load(form); 24 }); 25 }) 26 function elementor_conditional_logic_check_single(value_id,operator,value){ 27 var rs = false; 28 switch(operator) { 29 case "==": 30 if( value_id == value){ 31 rs = true; 32 } 33 break; 34 case "!=": 35 if( value_id != value){ 36 rs = true; 37 } 38 break; 39 case "e": 40 if( value_id == ""){ 41 rs = true; 42 } 43 break; 44 case "!e": 45 if( value_id != ""){ 46 rs = true; 47 } 48 break; 49 case "c": 50 if( value_id.includes(value)){ 51 rs = true; 52 } 53 break; 54 case "!c": 55 if( !value_id.includes(value)){ 56 rs = true; 57 } 58 break; 59 case "^": 60 if( value_id.startsWith(value)){ 61 rs = true; 62 } 63 break; 64 case "~": 65 if( value_id.endsWith(value) ){ 66 rs = true; 67 } 68 break; 69 case ">": 70 value_id = parseFloat(value_id); 71 value = parseFloat(value); 72 if( value_id > value){ 73 rs = true; 74 } 75 break; 76 case "<": 77 value_id = parseFloat(value_id); 78 value = parseFloat(value); 79 if( value_id < value){ 80 rs = true; 81 } 82 break; 83 } 84 return rs; 85 } 86 function elementor_conditional_logic_load(form){ 87 var datas = $(".conditional_logic_data_js",form).val(); 88 datas = jQuery.parseJSON(datas); 89 $.each( datas, function( field_key, field_value ) { 90 var field = elementor_conditional_logic_get_element_by_id(field_key,form); 91 var display = field_value.display; 92 var trigger = field_value.trigger; 93 var rs = []; 94 $.each( field_value.datas, function( conditional_logic_key, conditional_logic_values ) { 95 var value_id = elementor_conditional_logic_get_value_by_id(conditional_logic_values.conditional_logic_id,form); 96 rs.push( elementor_conditional_logic_check_single(value_id,conditional_logic_values.conditional_logic_operator,conditional_logic_values.conditional_logic_value)); 97 }) 98 if( trigger =="ALL" ){ 99 var check_rs = true; 100 $.each( rs, function( fkey, fvalue ) { 101 if( fvalue == false ){ 102 check_rs =false; 103 return false; 104 } 105 }) 106 if( display == "show" ) { 107 if( check_rs == true ){ 108 field.removeClass("hidden"); 109 elementor_conditional_logic_fixed_required_show(field); 110 }else{ 111 field.addClass("hidden"); 112 field.find('input').removeAttr('required'); 113 elementor_conditional_logic_fixed_required_hidden(field); 114 } 115 }else{ 116 if( check_rs == true ){ 117 field.addClass("hidden"); 118 field.find('input').removeAttr('required'); 119 elementor_conditional_logic_fixed_required_hidden(field); 120 }else{ 121 field.removeClass("hidden"); 122 elementor_conditional_logic_fixed_required_show(field); 123 } 124 } 125 }else{ 126 var check_rs = false; 127 $.each( rs, function( fkey, fvalue ) { 128 if( fvalue == true ){ 129 check_rs =true; 130 return false; 131 } 132 }) 133 if( display == "show" ) { 134 if( check_rs == true ){ 135 field.removeClass("hidden"); 136 elementor_conditional_logic_fixed_required_show(field); 137 }else{ 138 field.addClass("hidden"); 139 field.find('input').removeAttr('required'); 140 elementor_conditional_logic_fixed_required_hidden(field); 141 } 142 }else{ 143 if( check_rs == true ){ 144 field.addClass("hidden"); 145 elementor_conditional_logic_fixed_required_hidden(field); 146 }else{ 147 field.removeClass("hidden"); 148 elementor_conditional_logic_fixed_required_show(field); 149 } 150 } 151 } 152 }); 153 } 154 function elementor_conditional_logic_fixed_required_show(field){ 155 if(field.find(".elementor-field-repeater-data").length > 0 ){ 156 var fields_repeater = field.find(".elementor-field-required"); 157 fields_repeater.each(function( index ) { 158 elementor_conditional_logic_fixed_required_show_repeater($(this)) 159 }); 160 return; 161 }else{ 162 elementor_conditional_logic_fixed_required_show_repeater(field) 163 } 164 } 165 function elementor_conditional_logic_fixed_required_show_repeater(field){ 166 if( field.hasClass("elementor-field-type-radio") ){ 167 var value = field.data("check_required"); 168 if(value == "yes"){ 169 field.data("check_required","no"); 170 field.removeAttr("data-check_required"); 171 field.find("input").last().prop("checked", false); 172 } 173 } 174 else if( field.hasClass("elementor-field-type-date") ){ 175 var value = field.find("input").val(); 176 if(value == "1023-01-01"){ 177 field.find("input").val(""); 178 } 179 } 180 else if( field.hasClass("elementor-field-type-time") ){ 181 var value = field.find("input").val(); 182 if(value == "11:47"){ 183 field.find("input").val(""); 184 } 185 } 186 else if( field.hasClass("elementor-field-type-tel") ){ 187 var value = field.find("input").val(); 188 if(value == "1234567892"){ 189 field.find("input").val(""); 190 } 191 } 192 else if( field.hasClass("elementor-field-type-url") ){ 193 var value = field.find("input").val(); 194 if(value == "https://rednumber_dev_check.com"){ 195 field.find("input").val(""); 196 } 197 } 198 else if( field.hasClass("elementor-field-type-email") ){ 199 var value = field.find("input").val(); 200 if(value == "[email protected]"){ 201 field.find("input").val(""); 202 } 203 } 204 else if( field.hasClass("elementor-field-type-number") ){ 205 var value = field.find("input").val(); 206 if(value == "29081990"){ 207 field.find("input").val(""); 208 } 209 }else if( field.hasClass("elementor-field-type-select") ){ 210 var value = field.find("select").data("check_required"); 211 if(value == "yes"){ 212 field.find("select").data("check_required","no"); 213 field.find("select").removeAttr("data-check_required"); 214 field.find("select option:last").removeAttr("selected"); 215 } 216 } 217 else if( field.hasClass("elementor-field-type-textarea") ){ 218 var value = field.find("textarea").val(); 219 if(value == "rednumber_dev_check"){ 220 field.find("textarea").val(""); 221 } 222 }else{ 223 var value = field.find("input").val(); 224 if(value == "rednumber_dev_check"){ 225 field.find("input").val(""); 226 } 227 } 228 } 229 function elementor_conditional_logic_fixed_required_hidden(field){ 230 if(field.find(".elementor-field-repeater-data").length > 0 ){ 231 var fields_repeater = field.find(".elementor-field-required"); 232 fields_repeater.each(function( index ) { 233 elementor_conditional_logic_fixed_required_hidden_repeater($(this)) 234 }); 235 return; 236 }else{ 237 elementor_conditional_logic_fixed_required_hidden_repeater(field) 238 } 239 } 240 function elementor_conditional_logic_fixed_required_hidden_repeater(field){ 241 field.find("input").attr("aria-required"); 242 field.find("input").removeAttr("required"); 243 field.find("select").removeAttr("required"); 244 field.find("textarea").removeAttr("required"); 245 if( field.hasClass("elementor-field-type-radio") ){ 246 var value = field.find("input:checked").val(); 247 if(value === undefined){ 248 field.attr("data-check_required","yes"); 249 field.find("input").last().prop("checked", true); 250 field.find("input").last().attr("data-logic-last", true); 251 } 252 } 253 else if( field.hasClass("elementor-field-type-upload") ){
254 if(field.hasClass("elementor-field-required") ){ 255 alert("Conditional logic: Please do not use required in the upload field"); 256 } 257 field.find("input").removeAttr("aria-required"); 258 } 259 else if( field.hasClass("elementor-field-type-html1") ){ 260 } 261 else if( field.hasClass("elementor-field-type-date") ){ 262 var value = field.find("input").val(); 263 field.find("input").removeAttr("aria-required"); 264 if(value == ""){ 265 field.find("input").val("1023-01-01"); 266 } 267 } 268 else if( field.hasClass("elementor-field-type-time") ){ 269 var value = field.find("input").val(); 270 field.find("input").removeAttr("aria-required"); 271 if(value == ""){ 272 field.find("input").val("11:47"); 273 } 274 } 275 else if( field.hasClass("elementor-field-type-tel") ){ 276 var value = field.find("input").val(); 277 field.find("input").removeAttr("aria-required"); 278 if(value == ""){ 279 field.find("input").val("1234567892"); 280 } 281 } 282 else if( field.hasClass("elementor-field-type-url") ){ 283 var value = field.find("input").val(); 284 field.find("input").removeAttr("aria-required"); 285 if(value == ""){ 286 field.find("input").val("https://rednumber_dev_check.com"); 287 } 288 } 289 else if( field.hasClass("elementor-field-type-email") ){ 290 var value = field.find("input").val(); 291 field.find("input").removeAttr("aria-required"); 292 if(value == ""){ 293 field.find("input").val("[email protected]"); 294 } 295 } 296 else if( field.hasClass("elementor-field-type-number") ){ 297 var value = field.find("input").val(); 298 field.find("input").removeAttr("aria-required"); 299 field.find("input").removeAttr("min").removeAttr("max").removeAttr("aria-required"); 300 if(value == ""){ 301 field.find("input").val("29081990"); 302 } 303 } 304 else if( field.hasClass("elementor-field-type-textarea") ){ 305 var value = field.find("textarea").val(); 306 field.find("textarea").removeAttr("aria-required"); 307 if(value == ""){ 308 field.find("textarea").val("rednumber_dev_check"); 309 } 310 }else if( field.hasClass("elementor-field-type-select") ){ 311 var value = field.find("select").val(); 312 field.find("select").removeAttr("aria-required"); 313 if(value == ""){ 314 field.find("select").attr("data-check_required","yes"); 315 var myVal = field.find("select option:last").val(); 316 field.find("select").val(myVal); 317 } 318 }else if( field.hasClass("elementor-field-type-acceptance") ){ 319 if(field.find("input").is(':checked')) { 320 }else{ 321 field.find("input").removeAttr("aria-required"); 322 field.find("input").attr("data-logic-last",true); 323 field.find("input").prop("checked", true); 324 } 325 } 326 else{ 327 var value = field.find("input").val(); 328 field.find("input").removeAttr("aria-required"); 329 if(value == ""){ 330 field.find("input").val("rednumber_dev_check"); 331 } 332 } 333 } 334 function elementor_conditional_logic_get_value_by_id(id = "",form = "body"){ 335 var rs = ""; 336 if( $(".elementor-field-group-"+id,form).hasClass("elementor-field-type-radio") ){ 337 if($(".elementor-field-group-"+id +" input:checked",form).length > 0){ 338 rs= $(".elementor-field-group-"+id +" input:checked",form).val(); 339 } 340 } 341 else if( $(".elementor-field-group-"+id,form).hasClass("elementor-field-type-checkbox") ){ 342 var data = []; 343 $(".elementor-field-group-"+id +" input:checked",form).each(function(){ 344 data.push($(this).val()); 345 }) 346 rs= data.join(", "); 347 } 348 else if( $(".elementor-field-group-"+id,form).hasClass("elementor-field-type-select") ){ 349 rs= $(".elementor-field-group-"+id +" select",form).val(); 350 }else if( $(".elementor-field-group-"+id,form).hasClass("elementor-field-type-textarea") ){ 351 rs= $(".elementor-field-group-"+id +" textarea",form).val(); 352 } 353 else if( $(".elementor-field-group-"+id,form).hasClass("elementor-field-type-acceptance") ){ 354 if($(".elementor-field-group-"+id +" input",form).is(':checked')){ 355 rs ="on"; 356 }else{ 357 rs ="off"; 358 } 359 } 360 else{ 361 rs= $(".elementor-field-group-"+id +" input",form).val(); 362 } 363 if( rs === undefined){ 364 return id; 365 }else{ 366 return rs; 367 } 368 } 369 function elementor_conditional_logic_get_element_by_id(id = "",form=""){ 370 if($('[data-id-repeater="form-field-'+id+'"]',form).length > 0) { 371 if( $('[data-id-repeater="form-field-'+id+'"]',form).length > 0 ){ 372 return $('[data-id-repeater="form-field-'+id+'"]',form).closest(".elementor-field-group"); 373 }else{ 374 return $('[data-id-repeater="form-field-'+id+'-0"]',form).closest(".elementor-field-group"); 375 } 376 }else{ 377 if( $("#form-field-"+id,form).length > 0 ){ 378 return $("#form-field-"+id,form).closest(".elementor-field-group"); 379 }else{ 380 return $("#form-field-"+id+"-0",form).closest(".elementor-field-group"); 381 } 382 } 383 } 384 }) 385})(jQuery);
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.