90
90
addInput ( $ ( this ) ) ;
91
91
} ) ;
92
92
93
- var intervalID = setInterval ( function ( ) {
93
+ var intervalID = setInterval ( function ( ) {
94
94
if ( typeof form . data ( 'yiiActiveForm' ) === 'object' ) {
95
95
var attribute = form . yiiActiveForm ( 'find' , id ) ;
96
96
var attributeDefaults = [ ] ;
104
104
}
105
105
106
106
var attributeOptions = $ . extend ( { } , defaultAttributeOptions , settings . attributeOptions ) ;
107
- $ . each ( attributeOptions , function ( key , value ) {
107
+ $ . each ( attributeOptions , function ( key , value ) {
108
108
if ( typeof attributeDefaults [ key ] === 'undefined' ) {
109
109
attributeDefaults [ key ] = value ;
110
110
}
122
122
$wrapper . trigger ( event ) ;
123
123
}
124
124
} , 100 ) ;
125
+ } ,
126
+ add : function ( values ) {
127
+ addInput ( $ ( this ) , values ) ;
128
+ } ,
129
+ remove : function ( index ) {
130
+ var row = null ;
131
+ if ( index ) {
132
+ row = $ ( this ) . find ( '.js-input-remove:eq(' + index + ')' ) ;
133
+ } else {
134
+ row = $ ( this ) . find ( '.js-input-remove' ) . last ( ) ;
135
+ }
136
+ removeInput ( row ) ;
137
+ } ,
138
+ clear : function ( ) {
139
+ $ ( '.js-input-remove' ) . each ( function ( ) {
140
+ removeInput ( $ ( this ) ) ;
141
+ } ) ;
125
142
}
126
143
} ;
127
144
128
- var addInput = function ( btn ) {
129
- var $wrapper = $ ( btn ) . closest ( '.multiple-input' ) . first ( ) ,
130
- data = $wrapper . data ( 'multipleInput' ) ,
131
- settings = data . settings ,
132
- template = settings . template ,
133
- inputList = $wrapper . find ( '.multiple-input-list' ) . first ( ) ,
134
- count = $wrapper . find ( '.multiple-input-list__item' ) . length ;
145
+ var addInput = function ( btn , values ) {
146
+ var $wrapper = $ ( btn ) . closest ( '.multiple-input' ) . first ( ) ,
147
+ data = $wrapper . data ( 'multipleInput' ) ,
148
+ settings = data . settings ,
149
+ template = settings . template ,
150
+ inputList = $wrapper . find ( '.multiple-input-list' ) . first ( ) ,
151
+ count = $wrapper . find ( '.multiple-input-list__item' ) . length ;
135
152
136
153
if ( settings . limit != null && count >= settings . limit ) {
137
154
return ;
141
158
142
159
$ ( template ) . hide ( ) . appendTo ( inputList ) . fadeIn ( 300 ) ;
143
160
161
+ if ( values instanceof Object ) {
162
+ var tmp = [ ] ;
163
+ for ( var key in values ) {
164
+ if ( values . hasOwnProperty ( key ) ) {
165
+ tmp . push ( values [ key ] ) ;
166
+ }
167
+ }
168
+ values = tmp ;
169
+ }
170
+
171
+ var index = 0 ;
144
172
$ ( template ) . find ( 'input, select, textarea' ) . each ( function ( ) {
145
- addAttribute ( $ ( this ) ) ;
173
+ var that = $ ( this ) ,
174
+ tag = that . get ( 0 ) . tagName ,
175
+ id = getInputId ( that ) ,
176
+ obj = $ ( '#' + id ) ;
177
+
178
+ if ( values ) {
179
+ var val = values [ index ] ;
180
+
181
+ if ( tag == 'INPUT' || tag == 'TEXTAREA' ) {
182
+ obj . val ( val ) ;
183
+ } else if ( tag == 'SELECT' ) {
184
+ if ( val && val . indexOf ( 'option' ) ) {
185
+ obj . append ( val ) ;
186
+ } else {
187
+ var option = obj . find ( 'option[value="' + val + '"]' ) ;
188
+ if ( option . length ) {
189
+ obj . val ( val ) ;
190
+ }
191
+ }
192
+ }
193
+ }
194
+
195
+ addAttribute ( that ) ;
196
+
197
+ index ++ ;
146
198
} ) ;
147
199
148
200
var jsTemplate ;
162
214
var $wrapper = $btn . closest ( '.multiple-input' ) . first ( ) ,
163
215
$toDelete = $btn . closest ( '.multiple-input-list__item' ) ,
164
216
count = $ ( '.multiple-input-list__item' ) . length ,
165
- data = $wrapper . data ( 'multipleInput' ) ,
166
- settings = data . settings ;
217
+ data = $wrapper . data ( 'multipleInput' ) ,
218
+ settings = data . settings ;
167
219
168
220
if ( count > settings . min ) {
169
221
var event = $ . Event ( events . beforeDeleteRow ) ;
230
282
}
231
283
} ;
232
284
233
- var getInputId = function ( $input ) {
285
+ var getInputId = function ( $input ) {
234
286
var id = $input . attr ( 'id' ) ;
235
287
236
288
if ( typeof id === 'undefined' ) {
244
296
return id ;
245
297
} ;
246
298
247
- String . prototype . replaceAll = function ( search , replace ) {
299
+ String . prototype . replaceAll = function ( search , replace ) {
248
300
return this . split ( search ) . join ( replace ) ;
249
301
} ;
250
302
} ) ( window . jQuery ) ;
0 commit comments