1 | (function($) { |
---|
2 | $(document).ready(function(){ |
---|
3 | |
---|
4 | function _init_MyPiwiShop (){ |
---|
5 | if($('#prod_sel').length){ |
---|
6 | var $Sel = $('#prod-ch select#prod_sel option:selected').attr('value'); |
---|
7 | }else{ |
---|
8 | var $Sel = $('#prod-ch input#prod_inp').attr('value'); |
---|
9 | }; |
---|
10 | rempopt($Sel); |
---|
11 | } |
---|
12 | |
---|
13 | _init_MyPiwiShop () |
---|
14 | |
---|
15 | $(document).on('change','#prod_sel',function(){ |
---|
16 | $('#options_prod').children('div').remove(); |
---|
17 | if($('#prod_sel').length){ |
---|
18 | var $Sel = $('#prod-ch select#prod_sel option:selected').attr('value'); |
---|
19 | }else{ |
---|
20 | var $Sel = $('#prod-ch input#prod_inp').attr('value'); |
---|
21 | } |
---|
22 | rempopt($Sel); |
---|
23 | }); |
---|
24 | |
---|
25 | |
---|
26 | function rempopt($Sel){ |
---|
27 | var $prod = $('#panier').data('prod'), |
---|
28 | $r = 1; |
---|
29 | |
---|
30 | if (typeof $prod[$Sel] != "undefined") { |
---|
31 | var $option = $prod[$Sel].options; |
---|
32 | $('#options_prod').show(); |
---|
33 | $.each($option,function(i, ele){ |
---|
34 | var $optName = (ele.name), |
---|
35 | $optType = (ele.type), |
---|
36 | $optRequi = (ele.requi), |
---|
37 | $optVal = (ele.values); |
---|
38 | if($optRequi==1){ |
---|
39 | var $requi = '*', |
---|
40 | $req = 'requi'; |
---|
41 | $('#requi').show(); |
---|
42 | }else{ |
---|
43 | var $requi ='', |
---|
44 | $req =''; |
---|
45 | $('#requi').hide(); |
---|
46 | }; |
---|
47 | |
---|
48 | switch($optType){ |
---|
49 | case 'radio': |
---|
50 | var $optele = ($('<div />').addClass('inp').css('display','inline').append($('<input>').attr({'type':'hidden','value':$optName,'name':'on'+$r}))); |
---|
51 | $.each($optVal,function(e, ele){ |
---|
52 | var $i = ele.replace(/ /g,""); |
---|
53 | $optele.append($('<input>').attr({'id':'val'+$i,'name':'os'+$r,'type':'radio','value':ele})).append($('<label />').text(ele).attr('for','val'+$i)) |
---|
54 | }); |
---|
55 | break; |
---|
56 | case 'checkbox': |
---|
57 | var $optele = ($('<div />').addClass('inp')); |
---|
58 | $.each($optVal,function(e, ele){ |
---|
59 | var $i = ele.replace(/ /g,""); |
---|
60 | $optele.append($('<input>').attr({'class':$optName,'id':'val'+$i,'name':'os'+$r,'type':'checkbox','value':ele})).append($('<label />').text(ele).attr('for','val'+$i)).append($('<br>')); |
---|
61 | $r++ |
---|
62 | }); |
---|
63 | break; |
---|
64 | case 'select': |
---|
65 | var $optele =($('<div />').addClass('styled').append($('<select />').attr({'name':'os'+$r,'id' :'opt_select'})).append($('<input>').attr({'type':'hidden','value':$optName,'name':'on'+$r}))); |
---|
66 | $.each($optVal,function(i, ele){ |
---|
67 | $('#opt_select', $optele).append($('<option />').attr('value',ele).text(ele)); |
---|
68 | }); |
---|
69 | break; |
---|
70 | case 'text': |
---|
71 | var $optele = ($('<div />').addClass('inp').css('display','inline').append($('<input>').attr({'type':'text','name':'os'+$r})).append($('<input>').attr({'type':'hidden','value':$optName,'name':'on'+$r}))); |
---|
72 | break; |
---|
73 | case 'textarea': |
---|
74 | var $optele = ($('<div />').addClass('inp').css('display','inline').append($('<textarea />').attr({'cols':'50','rows':'4','name':'os'+$r})).append($('<input>').attr({'type':'hidden','value':$optName,'name':'on'+$r}))); |
---|
75 | break; |
---|
76 | } |
---|
77 | |
---|
78 | $('#options_prod').append($('<div />').addClass('blockOpt '+ $optType +' '+ $req).append($('<div />').css('display','inline-block').text($optName + ' ' + $requi)).append($optele)); |
---|
79 | |
---|
80 | $r++ |
---|
81 | }); |
---|
82 | }else{ |
---|
83 | $('#options_prod').hide(); |
---|
84 | } |
---|
85 | } |
---|
86 | |
---|
87 | $(document).on('change','.checkbox input[type=checkbox]', function () { |
---|
88 | var $on = $(this).attr('name').substring(2), |
---|
89 | $optName = $(this).attr('class'); |
---|
90 | |
---|
91 | if($(this).is(':checked')){ |
---|
92 | $('.checkbox').append($('<input>').attr({'type':'hidden','value':$optName,'name':'on'+$on})); |
---|
93 | }else{ |
---|
94 | $('input[name=on'+$on+']').remove(); |
---|
95 | } |
---|
96 | }); |
---|
97 | |
---|
98 | $(document).on('submit','#buyprod', function(){ |
---|
99 | var $return = true; |
---|
100 | $('.requi').each(function(){ |
---|
101 | var $this = $(this); |
---|
102 | |
---|
103 | if ( ($this.hasClass('text') && $.trim($('.inp input[type="text"]',this).val()).length==0) |
---|
104 | || ($this.hasClass('textarea') && $.trim($('.inp textarea',this).val()).length==0) |
---|
105 | || ($this.hasClass('radio') && $('.inp input[type="radio"]:checked',this).length==0) |
---|
106 | || ($this.hasClass('checkbox') && $('.inp input[type="checkbox"]:checked',this).length==0) |
---|
107 | ){ |
---|
108 | $this.css({borderColor:'red'}); |
---|
109 | $('.errors').fadeIn(); |
---|
110 | setTimeout(function(){ |
---|
111 | $('.errors').fadeOut(); |
---|
112 | $this.css({borderColor:'transparent'}) |
---|
113 | },3000); |
---|
114 | |
---|
115 | $return = false; |
---|
116 | } |
---|
117 | }) |
---|
118 | return $return; |
---|
119 | }) |
---|
120 | }); |
---|
121 | })(jQuery); |
---|