che roga

Código de la librería jStruct.js

/* * jStruct JavaScript Library v1.0 * http://silph.com.ar/ * * Copyright (c) 2009 Diego Maņas * Dual licensed under the MIT and GPL licenses. * http://silph.com.ar/jstruct/License.txt * */ var jstruct= {}; jstruct.relacionar= function (elemento,conjunto,relacion){ // el elemento se relaciona con el conjunto 'uno a uno' o 'uno a muchos' R= {}; f= relacion[elemento]; if (f==undefined) { return R; } for(i=0;i<f.length;i++){ R[f[i]]= conjunto[f[i]]; } return R; }; jstruct.ajustar= function (conjunto, id_select) { // al input select id_select le cambiamos sus options por los del conjunto select= document.getElementById(id_select); j= select.options.length; for (i=0; i< j;i++) { select.remove(select.options[i]); } select.innerHTML= ''; for (var elemento in conjunto) { select.innerHTML+="<option value='"+elemento +"'>"+conjunto[elemento]+"</option>\n"; } return; }; jstruct.F= function (elemento,conjunto,relacion,id_select){ // aplicar la relacion al elemento para obtener los correspondientes elementos del conjunto R= jstruct.relacionar(elemento,conjunto,relacion); jstruct.ajustar(R,id_select); return; };

Código de ejemplo: ejemplo.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Selects inteligentes</title> <SCRIPT src="jstruct.js" type=text/javascript></SCRIPT> <script> // conjuntos A y B A= {'1':'Argentina','2':'Brasil','3':'Paraguay'}; B= {'0':'-Seleccione uno-','1':'maiz','2':'trigo','3':'carne','4':'mani','5':'coco','6':'soja'}; // relacion entre el select A y el select B AxB= {'1':[0,1,2,3,6],'2':[0,3,5,6],'3':[0,3,4,6]}; </script> </head> <body> <p> Exportaciones: </p> Pa&iacute;s: <select id='A' onChange='jstruct.F(this.value,B,AxB,"B")'> <option value='0'>-Seleccione uno-</option> <option value='1'>Argentina</option> <option value='2'>Brasil</option> <option value='3'>Paraguay</option> </select> Producto: <select id='B'> <option value='0'>-Seleccione uno-</option> </select> </body> </html>

Demo

Exportaciones:

País: Producto: