Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/05/2004, 16:51
skywaker
 
Fecha de Ingreso: marzo-2004
Mensajes: 65
Antigüedad: 20 años, 1 mes
Puntos: 0
/*selectphp.js*/

// constants
var noValue = '-99'

// globals
var curOption = new Array();
var isLoaded = new Array();

function body_onLoad(){
// initialize lists
emptyList( 'lstMake' );
emptyList( 'lstModel');
emptyList( 'lstOptions' );
jsrsExecute( 'select_rs.php', cbFillMake, 'makeList' );
}

function lstMake_onChange(){
var val = this.options[this.selectedIndex].value;
if(val == noValue){
// don't allow novalue selection - revert to current
selectOption( this.name, curOption[this.name] )
} else {
curOption[this.name] = val;
// init dependent lists
emptyList( 'lstModel' );
emptyList( 'lstOptions');
window.status = 'Loading Model Selections...';
jsrsExecute( 'select_rs.php', cbFillModel, 'modelList', val );
}
}

function lstModel_onChange(){
var val = this.options[this.selectedIndex].value;
if(val == noValue){
selectOption( this.name, curOption[this.name] )
} else {
curOption[this.name] = val;
emptyList( 'lstOptions');
window.status = 'Cargando opciones de seleccion...';
jsrsExecute( 'select_rs.php', cbFillOptions, 'optionsList', val );
}
}

function lstOptions_onChange(){
var val = this.options[this.selectedIndex].value;
if(val == noValue){
selectOption( this.name, curOption[this.name] )
} else {
var msg = "Esto es lo que has elegido: \n\n";
msg += this.form.lstMake.options[this.form.lstMake.selectedIndex].value + "\n";
msg += this.form.lstModel.options[this.form.lstModel.selectedIndex].value + "\n";
msg += this.options[this.selectedIndex].value + "\n";
alert (msg);
}
}

function cbFillMake ( strMakes ){
window.status = '';
fillList( 'lstMake', strMakes );
}

function cbFillModel ( strModels ){
// callback for dependent listbox
window.status = '';
fillList( 'lstModel', strModels );
}

function cbFillOptions( strOptions ){
// callback for dependent listbox
window.status = '';
fillList( 'lstOptions', strOptions );
}

function fillList( listName, strOptions ){
// fill any list with options
emptyList( listName );

// always insert selection prompt
var lst = document.forms['QForm'][listName];
lst.disabled = true;
lst.options[0] = new Option('-- Please Select --', noValue);

// options in form "value~displaytext|value~displaytext|..."
var aOptionPairs = strOptions.split('|');
for( var i = 0; i < aOptionPairs.length; i++ ){
if (aOptionPairs[i].indexOf('~') != -1) {
var aOptions = aOptionPairs[i].split('~');
// lst.options[i + 1] = new Option(aOptions[1], aOptions[0]);
lst.options[i + 1 ] = new Option(aOptions[0], aOptions[1]);
// lst.values[]

// alert('el primer elemento'+aOptions[0]);
// alert('el segundo elemento'+aOptions[1]);

// this.form.lstModel.options[this.form.lstModel.selectedIndex].text
}
}

// init to no value
selectOption( listName, noValue );
isLoaded[listName] = true;
lst.disabled = false;
lst.onchange = eval( listName + "_onChange" );
// eval( "document.forms['QForm']['" + listName + "'].onchange=" + listName + "_onChange;" );
}

function emptyList( listName ){
var lst = document.forms['QForm'][listName];
lst.options.length = 0;
lst.onchange = null;
isLoaded[listName] = false;
curOption[listName] = noValue;
}

function selectOption( listName, optionVal ){
// set list selection to option based on value
var lst = document.forms['QForm'][listName];
for( var i = 0; i< lst.options.length; i++ ){
if( lst.options[i].value == optionVal ){
lst.selectedIndex = i;
curOption[listName] = optionVal;
return;
}
}
}


/*TERMINA selectphp.js*/