1
- $ . fn . selectize = function ( settings ) {
1
+ $ . fn . selectize = function ( settings_user ) {
2
2
settings = settings || { } ;
3
3
4
- var defaults = $ . fn . selectize . defaults ;
5
- var dataAttr = settings . dataAttr || defaults . dataAttr ;
4
+ var defaults = $ . fn . selectize . defaults ;
5
+ var settings = $ . extend ( { } , defaults , settings_user ) ;
6
+ var attr_data = settings . dataAttr ;
7
+ var field_label = settings . labelField ;
8
+ var field_value = settings . valueField ;
9
+ var field_optgroup = settings . optgroupField ;
10
+ var field_optgroup_label = settings . optgroupLabelField ;
11
+ var field_optgroup_value = settings . optgroupValueField ;
6
12
7
13
/**
8
14
* Initializes selectize from a <input type="text"> element.
9
15
*
10
16
* @param {object } $input
11
- * @param {object } settings
17
+ * @param {object } settings_element
12
18
*/
13
19
var init_textbox = function ( $input , settings_element ) {
14
- var i , n , values , value = $ . trim ( $input . val ( ) || '' ) ;
20
+ var i , n , values , option , value = $ . trim ( $input . val ( ) || '' ) ;
15
21
if ( ! value . length ) return ;
16
22
17
- values = value . split ( settings . delimiter || defaults . delimiter ) ;
23
+ values = value . split ( settings . delimiter ) ;
18
24
for ( i = 0 , n = values . length ; i < n ; i ++ ) {
19
- settings_element . options [ values [ i ] ] = {
20
- 'text' : values [ i ] ,
21
- 'value' : values [ i ]
22
- } ;
25
+ option = { } ;
26
+ option [ field_label ] = values [ i ] ;
27
+ option [ field_value ] = values [ i ] ;
28
+
29
+ settings_element . options [ values [ i ] ] = option ;
23
30
}
24
31
25
32
settings_element . items = values ;
@@ -29,18 +36,14 @@ $.fn.selectize = function(settings) {
29
36
* Initializes selectize from a <select> element.
30
37
*
31
38
* @param {object } $input
32
- * @param {object } settings
39
+ * @param {object } settings_element
33
40
*/
34
41
var init_select = function ( $input , settings_element ) {
35
- var i , n , tagName ;
36
- var $children ;
37
- var order = 0 ;
42
+ var i , n , tagName , $children , order = 0 ;
38
43
var options = settings_element . options ;
39
44
40
- settings_element . maxItems = ! ! $input . attr ( 'multiple' ) ? null : 1 ;
41
-
42
45
var readData = function ( $el ) {
43
- var data = dataAttr && $el . attr ( dataAttr ) ;
46
+ var data = attr_data && $el . attr ( attr_data ) ;
44
47
if ( typeof data === 'string' && data . length ) {
45
48
return JSON . parse ( data ) ;
46
49
}
@@ -72,11 +75,10 @@ $.fn.selectize = function(settings) {
72
75
return ;
73
76
}
74
77
75
- option = readData ( $option ) || {
76
- 'text' : $option . text ( ) ,
77
- 'value' : value ,
78
- 'optgroup' : group
79
- } ;
78
+ option = readData ( $option ) || { } ;
79
+ option [ field_label ] = option [ field_label ] || $option . text ( ) ;
80
+ option [ field_value ] = option [ field_value ] || value ;
81
+ option [ field_optgroup ] = option [ field_optgroup ] || group ;
80
82
81
83
option . $order = ++ order ;
82
84
options [ value ] = option ;
@@ -87,21 +89,26 @@ $.fn.selectize = function(settings) {
87
89
} ;
88
90
89
91
var addGroup = function ( $optgroup ) {
90
- var i , n , $options = $ ( 'option' , $optgroup ) ;
92
+ var i , n , id , optgroup , $options ;
93
+
91
94
$optgroup = $ ( $optgroup ) ;
95
+ id = $optgroup . attr ( 'label' ) ;
92
96
93
- var id = $optgroup . attr ( 'label' ) ;
94
- if ( id && id . length ) {
95
- settings_element . optgroups [ id ] = readData ( $optgroup ) || {
96
- 'label' : id
97
- } ;
97
+ if ( id ) {
98
+ optgroup = readData ( $optgroup ) || { } ;
99
+ optgroup [ field_optgroup_label ] = id ;
100
+ optgroup [ field_optgroup_value ] = id ;
101
+ settings_element . optgroups [ id ] = optgroup ;
98
102
}
99
103
104
+ $options = $ ( 'option' , $optgroup ) ;
100
105
for ( i = 0 , n = $options . length ; i < n ; i ++ ) {
101
106
addOption ( $options [ i ] , id ) ;
102
107
}
103
108
} ;
104
109
110
+ settings_element . maxItems = $input . attr ( 'multiple' ) ? null : 1 ;
111
+
105
112
$children = $input . children ( ) ;
106
113
for ( i = 0 , n = $children . length ; i < n ; i ++ ) {
107
114
tagName = $children [ i ] . tagName . toLowerCase ( ) ;
@@ -116,7 +123,7 @@ $.fn.selectize = function(settings) {
116
123
return this . each ( function ( ) {
117
124
var instance ;
118
125
var $input = $ ( this ) ;
119
- var tag_name = $input [ 0 ] . tagName . toLowerCase ( ) ;
126
+ var tag_name = this . tagName . toLowerCase ( ) ;
120
127
var settings_element = {
121
128
'placeholder' : $input . children ( 'option[value=""]' ) . text ( ) || $input . attr ( 'placeholder' ) ,
122
129
'options' : { } ,
@@ -130,7 +137,7 @@ $.fn.selectize = function(settings) {
130
137
init_textbox ( $input , settings_element ) ;
131
138
}
132
139
133
- instance = new Selectize ( $input , $ . extend ( true , { } , defaults , settings_element , settings ) ) ;
140
+ instance = new Selectize ( $input , $ . extend ( true , { } , defaults , settings_element , settings_user ) ) ;
134
141
$input . data ( 'selectize' , instance ) ;
135
142
$input . addClass ( 'selectized' ) ;
136
143
} ) ;
0 commit comments