scripts.js
59 lines
| 1 | (function($) { |
| 2 | //if (wpcf7cf_options == null) var wpcf7cf_options = []; |
| 3 | console.log(wpcf7cf_options); |
| 4 | |
| 5 | $(document).ready(function() { |
| 6 | function display_fields() { |
| 7 | console.log('display fields'); |
| 8 | $('.wpcf7cf_group').hide(); |
| 9 | for (var i=0; i < wpcf7cf_options.length; i++) { |
| 10 | |
| 11 | var condition = wpcf7cf_options[i]; |
| 12 | console.log(condition); |
| 13 | if (condition.then_visibility == 'hide') continue; |
| 14 | |
| 15 | if ($('[name='+condition.if_field+']').length) { |
| 16 | |
| 17 | // single field |
| 18 | |
| 19 | $field = $('[name='+condition.if_field+']'); |
| 20 | if (condition.operator == 'equals' && $field.val() == condition.if_value || condition.operator == 'not equals' && $field.val() != condition.if_value) { |
| 21 | $('#'+condition.then_field).show(); |
| 22 | } |
| 23 | |
| 24 | } else if ($('[name='+condition.if_field+'\\[\\]]').length) { |
| 25 | |
| 26 | // multiple fields (checkboxes) |
| 27 | |
| 28 | $fields = $('[name='+condition.if_field+'\\[\\]]'); |
| 29 | |
| 30 | var all_values = []; |
| 31 | var checked_values = []; |
| 32 | $fields.each(function() { |
| 33 | all_values.push($(this).val()); |
| 34 | if($(this).is(':checked')) { |
| 35 | checked_values.push($(this).val()); |
| 36 | } |
| 37 | }); |
| 38 | |
| 39 | console.log(all_values); |
| 40 | console.log(checked_values); |
| 41 | console.log(condition.operator); |
| 42 | console.log(condition.if_value); |
| 43 | console.log(condition.then_field); |
| 44 | |
| 45 | if (condition.operator == 'equals' && $.inArray(condition.if_value, checked_values) != -1) { |
| 46 | $('#'+condition.then_field).show(); |
| 47 | } else if (condition.operator == 'not equals' && $.inArray(condition.if_value, all_values) != -1 && $.inArray(condition.if_value, checked_values) == -1) { |
| 48 | $('#'+condition.then_field).show(); |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | } |
| 53 | } |
| 54 | display_fields(); |
| 55 | $('input, select, textarea').change(display_fields); |
| 56 | }); |
| 57 | |
| 58 | })( jQuery ); |
| 59 |