Changeset 6529
- Timestamp:
- 04/16/07 10:57:07 (1 year ago)
- Files:
-
- spinoffs/prototype/branches/form/src/form.js (modified) (2 diffs)
- spinoffs/prototype/branches/form/test/unit/form.html (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/prototype/branches/form/src/form.js
r6528 r6529 186 186 187 187 var Field = Form.Element; 188 var $F = function(el , value) {189 return Form.Element[value === undefined ? 'getValue' : 'setValue'](el , value);188 var $F = function(element, value) { 189 return Form.Element[value === undefined ? 'getValue' : 'setValue'](element, value); 190 190 } 191 191 … … 204 204 205 205 inputSelector: function(element, value) { 206 return value === undefined ? 207 (element.checked ? element.value : null) : 208 (element.checked = !!value); 206 if (value === undefined) return element.checked ? element.value : null; 207 else element.checked = !!value; 209 208 }, 210 209 211 210 textarea: function(element, value) { 212 return value === undefined ? element.value : (element.value = value); 213 }, 214 215 select: function(element, indexes) { 216 return this[element.type == 'select-one' ? 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) { 211 if (value === undefined) return element.value; 212 else element.value = value; 213 }, 214 215 select: function(element, index) { 216 if (index === undefined) 217 return this[element.type == 'select-one' ? 218 'selectOne' : 'selectMany'](element); 219 else { 220 var opt, value, single = index.constructor != Array; 221 for (var i = 0, length = element.length; i < length; i++) { 222 opt = element.options[i]; 223 value = this.optionValue(opt); 224 if (single) { 225 if (value == index) { 226 opt.selected = true; 227 return; 228 } 229 } 230 else opt.selected = index.include(value); 231 } 232 } 233 }, 234 235 selectOne: function(element) { 236 var index = element.selectedIndex; 237 return index >= 0 ? this.optionValue(element.options[index]) : null; 238 }, 239 240 selectMany: function(element) { 229 241 var values, length = element.length; 230 242 if (!length) return null; 231 if (indexes !== undefined && indexes.constructor != Array) indexes = [indexes];232 243 233 244 for (var i = 0, values = []; i < length; i++) { 234 245 var opt = element.options[i]; 235 if (indexes === undefined) { if (opt.selected) values.push(this.optionValue(opt)); } 236 else opt.selected = indexes.include(i); 246 if (opt.selected) values.push(this.optionValue(opt)); 237 247 } 238 248 return values; spinoffs/prototype/branches/form/test/unit/form.html
r6528 r6529 401 401 // selectbox 402 402 input = $('form_selects')['vu']; 403 input.setValue( 2);403 input.setValue('3'); 404 404 assertEqual('3', input.getValue()); 405 input.setValue( 0);405 input.setValue('1'); 406 406 assertEqual('1', input.getValue()); 407 407 // multiple select 408 408 input = $('form_selects')['vm[]']; 409 input.setValue([ 1, 2]);409 input.setValue(['2', '3']); 410 410 assertEnumEqual(['2', '3'], input.getValue()); 411 input.setValue(0); 412 assertEnumEqual(['1'], input.getValue()); 413 input.setValue([0, 2]); 411 // should this work? 412 // input.setValue('1'); 413 // assertEnumEqual(['1'], input.getValue()); 414 input.setValue(['1', '3']); 414 415 assertEnumEqual(['1', '3'], input.getValue()); 415 416 }}