Ticket #6326: 6326-hideous-hack.patch
| File 6326-hideous-hack.patch, 2.0 kB (added by kruse, 1 year ago) |
|---|
-
src/form.js
old new 227 227 this.element = $(element); 228 228 this.callback = callback; 229 229 230 // #6326 - hideous hack! 231 var fixSelectedIndex = function(element) { 232 element._selectedIndex = element.selectedIndex; 233 element.observe('change', function(event) { 234 var target = Event.element(event); 235 target._selectedIndex = target.selectedIndex; 236 }); 237 }; 238 if ('select' == this.element.tagName.toLowerCase()) { 239 fixSelectedIndex(this.element); 240 } 241 if ('form' == this.element.tagName.toLowerCase()) { 242 $A(this.element.getElementsByTagName('select')).each(fixSelectedIndex); 243 } 244 230 245 this.lastValue = this.getValue(); 231 246 this.registerCallback(); 232 247 }, … … 249 264 Form.Element.Observer = Class.create(); 250 265 Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { 251 266 getValue: function() { 252 return Form.Element.getValue(this.element); 267 if ('select' == this.element.tagName.toLowerCase()) { 268 // #6326 - hideous hack! 269 return this.element._selectedIndex >= 0 270 ? Form.Element.Serializers.optionValue(this.element.options[this.element._selectedIndex]) 271 : null; 272 } else { 273 return Form.Element.getValue(this.element); 274 } 253 275 } 254 276 }); 255 277 256 278 Form.Observer = Class.create(); 257 279 Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { 258 280 getValue: function() { 259 return Form.serialize(this.element); 281 var data = Form.serialize(this.element, true); 282 283 // #6326 - hideous hack! 284 $A(this.element.getElementsByTagName('select')).each(function(element) { 285 if (!element.disabled && element.name) { 286 data[element.name] = element._selectedIndex >= 0 287 ? Form.Element.Serializers.optionValue(element.options[element._selectedIndex]) 288 : null; 289 } 290 }); 291 292 return Hash.toQueryString(data); 260 293 } 261 294 }); 262 295