
21/10/2004, 09:14
|
| | Fecha de Ingreso: enero-2002 Ubicación: Lima
Mensajes: 117
Antigüedad: 23 años, 3 meses Puntos: 0 | |
Este es optionex.js:
var NS4 = (document.layers)?true:false;
var IE4 = (document.all)?true:false;
function _struct(child,childcaption,parent){
this.child = child;
this.childcaption = childcaption;
this.parent = parent;
}
function _addobject(child,childcaption,parent){
var obj = new _struct();
obj.child = child;
obj.childcaption = childcaption;
obj.parent = parent;
return(obj);
}
function insertEntry(child,childcaption,parent){
if(child.length > 0 ){
for(var i=0;i<this.length;i++)
if(this.items[i].child == child)
return;
this.items[this.length++] = _addobject(child,childcaption,parent);
}
}
function OptionCollection(){
this.length=0;
this.items = new Object();
this.Add=insertEntry
}
function clearSelect(oSelect){
var iCount=0;
if(!oSelect) return;
iCount = oSelect.options.length;
for(var i=0;i<iCount;i++){
if(IE4)
oSelect.options.remove(0);
else if(NS4)
oSelect.options[0]=null;
}
}
function agregaOpcion(oSelect,nIndice,cClave,cDescri){
elSelectOption = new Option();
elSelectOption.value = cClave;
elSelectOption.text = cDescri;
if(NS4) oSelect.options[nIndice] = elSelectOption;
else if(IE4) oSelect.options.add(elSelectOption,nIndice);
delete(elSelectOption);
}
function addOptions(oSelect,olist,parent){
var elOption;
var idxSelect=0;
//check arguments.
if((!olist) || (!oSelect))return;
if(parent.length <= 0) return;
//now looop through all the list items only entering relevant options.
clearSelect(oSelect);
//add a blank list
// - elBlankOption = new Option();
// - elBlankOption.text = "";
// - if(NS4) oSelect.options[0] = elBlankOption
// - else if(IE4) oSelect.options.add(elBlankOption,0)
// - elBlankOption.value = "";
for(var i=0;i<olist.length;i++){
//only the child entries of the parent
if(olist.items[i].parent == parent){
if(idxSelect==0){
agregaOpcion(oSelect,0,"","Seleccione un valor de la lista");
idxSelect++;
}
elOption = new Option();
//now IE and NS have a different way to handle object creation.
if(NS4){
elOption.value = olist.items[i].child
elOption.text = olist.items[i].childcaption
oSelect.options[idxSelect] = elOption
}else if(IE4){
elOption.value = olist.items[i].child
elOption.text = olist.items[i].childcaption
oSelect.options.add(elOption,idxSelect)
}
idxSelect++;
delete(elOption);
}
}
if(oSelect.length<=0){
agregaOpcion(oSelect,0,"","No se encontraron valores coincidentes");
}
oSelect.selectedIndex = 0;
}
function clearOptions(szSelect,szForm){
if(szSelect.length <= 0 || szForm.length <=0)
alert("error:clearOption must pass arguments");
if(IE4)
clearSelect(document.all.item(szSelect));
else if(NS4)
clearSelect(eval('document.' + szForm + '.' + szSelect));
}
function listAllOptions(szSelect,szForm,olist){
var elOption;
var idxSelect=0;
var oSelect = new Object();
//check arguments.
if(!olist)return;
if(IE4)
oSelect = document.all.item(szSelect);
else if(NS4)
oSelect = eval('document.' + szForm + '.' + szSelect);
if(!oSelect)return;
//now looop through all the list items entering all
clearSelect(oSelect);
for(var i=0;i<olist.length;i++){
elOption = new Option();
//now IE and NS have a different way to handle object creation.
if(NS4){
elOption.value = olist.items[i].child
elOption.text = olist.items[i].childcaption
oSelect.options[idxSelect] = elOption
}else if(IE4){
elOption.value = olist.items[i].child
elOption.text = olist.items[i].childcaption
oSelect.options.add(elOption,idxSelect)
}
idxSelect++;
delete(elOption);
}
}
function UpdateSelect(szSelect,szForm,szParent,olist){
if(IE4)
addOptions(document.all.item(szSelect),olist,szPar ent);
else if(NS4)
addOptions(eval('document.' + szForm + '.' + szSelect),olist,szParent);
}
Pero como te comente, te recomiendo que hagas varias lecturas al server, yo tuve despues algunos problemas para en los select, poner los selected al recuperar los informacion desde la base de datos, para un regitro existente, mucho mas sencillo fue manejarlo de la manera que te recomiendo.
__________________ <script language=VbScript>
msgbox "Gracias por Leer este mensaje, si puedes respondelo"
</script> |