source: extensions/MyPiwiShop/template/js/MyPiwiShop.js @ 27743

Last change on this file since 27743 was 27743, checked in by Miklfe, 10 years ago

Version de lancement

File size: 4.3 KB
Line 
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);
Note: See TracBrowser for help on using the repository browser.