Here's an implementation that works in all the browsers I've checked:
var combinator = function(){
$$('select.combo').each(function(elm){
var elm = $(elm);
var texts = ['Choose...'];
var opts = [''];
var sel =
(elm.options[elm.options.selectedIndex].defaultSelected) ?
elm.options.selectedIndex : -1;
for (var i=0; i < elm.options.length; i++) {
opts.push(elm.options[i].value);
texts.push(elm.options[i].text);
};
texts.push('Add new...');
opts.push('Add new...');
elm.options.length = 0;
texts.each(function(el,idx){
elm.options[idx] = new Option(el, opts[idx], (idx ==
0), false);
});
elm.options.selectedIndex = (sel + 1);
elm.observe('change',function(evt){
if(this.value == 'Add new...'){
if(!window.bak) window['bak'] = {};
window.bak[this.id] = this;
var ti = new Element('input',
{type:'text',name:this.name,id:this.id});
this.replace(ti);
ti.focus();
ti.observe('blur',function(evt){
if(this.getValue() == '') {
this.replace(window.bak[this.id]);
$(this.id).options.selectedIndex = 0;
}
});
}
})
});
}
I use this to turn select controls into combo boxes, where you can add
a value not found in the list by choosing Add new...
I believe what you need to look at is whether the selectedIndex is
also the defaultSelected. The picker will always show whatever is the
selectedIndex, but on a reload, it will show whatever is the
defaultSelected.
Walter
On Dec 10, 2009, at 11:11 AM, Ruben. D. wrote:
> I've tried in Firefox and Opera and the result is the same.
>
> --
> Rubén Dávila Santos.
> http://rubenonrails.com
>
> --
>
> You received this message because you are subscribed to the Google
> Groups "Prototype & script.aculo.us" group.
> To post to this group, send email to [email protected]
> .
> To unsubscribe from this group, send email to
> [email protected]
> .
> For more options, visit this group at
> http://groups.google.com/group/prototype-scriptaculous?hl=en
> .
--
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en.