Changeset 6527
- Timestamp:
- 04/16/07 00:02:33 (2 years ago)
- Files:
-
- spinoffs/prototype/branches/form/src/form.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/prototype/branches/form/src/form.js
r6526 r6527 134 134 }, 135 135 136 setValue: function(element, value) { 137 element = $(element); 138 var method = element.tagName.toLowerCase(); 139 Form.Element.Serializers[method](element, value); 140 return element; 141 }, 142 136 143 clear: function(element) { 137 144 $(element).value = ''; … … 179 186 180 187 var Field = Form.Element; 181 var $F = Form.Element.getValue; 188 var $F = function(el, value) { 189 return Form.Element[value === undefined ? 'getValue' : 'setValue'](el, value); 190 } 182 191 183 192 /*--------------------------------------------------------------------------*/ 184 193 185 194 Form.Element.Serializers = { 186 input: function(element ) {195 input: function(element, value) { 187 196 switch (element.type.toLowerCase()) { 188 197 case 'checkbox': 189 198 case 'radio': 190 return Form.Element.Serializers.inputSelector(element );199 return Form.Element.Serializers.inputSelector(element, value); 191 200 default: 192 return Form.Element.Serializers.textarea(element); 193 } 194 }, 195 196 inputSelector: function(element) { 197 return element.checked ? element.value : null; 198 }, 199 200 textarea: function(element) { 201 return element.value; 202 }, 203 204 select: function(element) { 201 return Form.Element.Serializers.textarea(element, value); 202 } 203 }, 204 205 inputSelector: function(element, value) { 206 return value === undefined ? 207 (element.checked ? element.value : null) : 208 (element.checked = !!value); 209 }, 210 211 textarea: function(element, value) { 212 return value === undefined ? element.value : (element.value = value); 213 }, 214 215 select: function(element, indexes) { 205 216 return this[element.type == 'select-one' ? 206 'selectOne' : 'selectMany'](element); 207 }, 208 209 selectOne: function(element) { 210 var index = element.selectedIndex; 211 return index >= 0 ? this.optionValue(element.options[index]) : null; 212 }, 213 214 selectMany: function(element) { 217 'selectOne' : 'selectMany'](element, indexes); 218 }, 219 220 selectOne: function(element, index) { 221 if (index === undefined) { 222 index = element.selectedIndex; 223 return index >= 0 ? this.optionValue(element.options[index]) : null; 224 } 225 else element.selectedIndex = index; 226 }, 227 228 selectMany: function(element, indexes) { 215 229 var values, length = element.length; 216 230 if (!length) return null; … … 218 232 for (var i = 0, values = []; i < length; i++) { 219 233 var opt = element.options[i]; 220 if (opt.selected) values.push(this.optionValue(opt)); 234 if (indexes === undefined) { if (opt.selected) values.push(this.optionValue(opt)); } 235 else opt.selected = indexes.include(i); 221 236 } 222 237 return values;