@@ -44,11 +44,10 @@ define([
44
44
options = $ ( this . options . productBundleSelector , form ) ,
45
45
qty = $ ( this . options . qtyFieldSelector , form ) ;
46
46
47
- options . trigger ( 'change' ) ;
48
-
49
47
// Override defaults with URL query parameters and/or inputs values
50
48
this . _overrideDefaults ( ) ;
51
49
50
+ options . trigger ( 'change' ) ;
52
51
qty . trigger ( 'change' ) ;
53
52
} ,
54
53
@@ -90,21 +89,45 @@ define([
90
89
var queryParams = $ . parseQuery ( {
91
90
query : queryString
92
91
} ) ,
92
+ selectedValues = [ ] ,
93
93
form = this . element ,
94
94
options = $ ( this . options . productBundleSelector , form ) ,
95
95
qtys = $ ( this . options . qtyFieldSelector , form ) ;
96
96
97
97
$ . each ( queryParams , $ . proxy ( function ( key , value ) {
98
- options . each ( function ( index , option ) {
99
- if ( option . name === key ) {
100
- $ ( option ) . val ( value ) ;
101
- }
102
- } ) ;
103
98
qtys . each ( function ( index , qty ) {
104
99
if ( qty . name === key ) {
105
100
$ ( qty ) . val ( value ) ;
106
101
}
107
102
} ) ;
103
+ options . each ( function ( index , option ) {
104
+ let optionType = $ ( option ) . prop ( 'type' ) ;
105
+
106
+ if ( option . name === key ||
107
+ optionType === 'select-multiple'
108
+ && key . indexOf ( option . name . substr ( 0 , option . name . length - 2 ) ) !== false
109
+ ) {
110
+
111
+ switch ( optionType ) {
112
+ case 'radio' :
113
+ $ ( option ) . val ( ) === value ? $ ( option ) . prop ( 'checked' , true ) : '' ;
114
+ break ;
115
+ case 'checkbox' :
116
+ $ ( option ) . prop ( 'checked' , true ) ;
117
+ break ;
118
+ case 'hidden' :
119
+ case 'select-one' :
120
+ $ ( option ) . val ( value ) ;
121
+ break ;
122
+ case 'select-multiple' :
123
+ selectedValues . push ( value ) ;
124
+ break ;
125
+ }
126
+ if ( optionType === 'select-multiple' && selectedValues . length ) {
127
+ $ ( option ) . val ( selectedValues ) ;
128
+ }
129
+ }
130
+ } ) ;
108
131
} , this ) ) ;
109
132
} ,
110
133
0 commit comments