[javaEScript] select's dependientes y ajax

Juan José Montes de Oca Arbós juanjose.montesdeocaarbos en gmail.com
Jue Mayo 31 15:41:12 PDT 2007


Hola Yurk, el problema que tienes es que se te van acumulando los datos en
el combo de las subcategorias, ¿verdad? Si te entendí bien, lo que tenés que
hacer antes de cargar la respuesta que obtuviste del servidor (mediante
AJAX) es eliminar los elementos que tenes en el combo. Javascript no tiene
una funcion para eliminar todos los elementos de una (por lo menos, yo no la
encontre), asi que lo que tenes que hacer es recorrer todos los elementos
del combo e ir eliminandolos uno por uno, y recien ahi, cargar la respuesta.

Saludos


-- 
Juan José Montes de Oca Arbós.

juanjose.montesdeocaarbos en gmail.com
juanjosemontesdeocaarbos en hotmail.com
http://world5.monstersgame.es/?ac=vid&vid=58044309
http://www.montesoft.com.ar
http://www.es-facil.com/ganar/alta?Id=64395956

2007/5/31, Yurk! <atujpay en gmail.com>:
>
> Saludos amig en s de la lista, les escribo pues tengo una duda con la que
> espero puedan ayudarme. Tengo un par select's, ellos contendra las
> categorias y el segundo las subcategorias que correspondan con la
> categoria que se seleccione del primer elemento select y para esto
> estoy hechando mano de Ajax. El problema que tengo es que no logro
> "limpiar" los subcategorias del segundo combo cuando selecciono otra
> categoria del primer select. El codigo que uso es el siguiente:
>
> function getData() {
>   var eCategory       = document.getElementById("cbocategory");
>   var eSubCategory    = document.getElementById("cbosubcategory");
>
>   if (eCategory.selectedIndex != 0) {
>
>     var iSelectedCategory = eCategory.value;
>     var querystring = "?cat="+iSelectedCategory;
>     var oXmlHttp = zXmlHttp.createRequest();
>     oXmlHttp.open("get", "zz-get-childcategories.asp"+querystring, true);
>     oXmlHttp.onreadystatechange = function() {
>
>       if(oXmlHttp.readyState == AjaxConst.XMLHTTP_STATUS_COMPLETE) {
>         if(oXmlHttp.status == AjaxConst.HTTP_RESPONSE_STATUS_OK) {
>
>           fillSubcategories(oXmlHttp.responseText);
>
>         } else {
>           //~ showResult("Ocurrio un error. " + oXmlHttp.statusText);
>         }
>       }
>
>     };
>     oXmlHttp.send(null);
>   }
>
> }//;
>
> function fillSubcategories(arData) {
>
>   eSubCategory = document.getElementById("cbosubcategory");
>   arGroupPairData = arData.split("|");
>
>   for(var i=0; i<arGroupPairData.length; i++) {
>     var sPairValueText = arGroupPairData[i].split(",");
>     addOptions(eSubCategory, sPairValueText[0], sPairValueText[1]);
>   }
> }//;
>
> function addOptions(eSelect, sValue, sText) {
>     var eNewOption = document.createElement('option');
>     eNewOption.value = sValue;
>     eNewOption.text = sText;
>     try {
>       eSelect.add(eNewOption, null);    // standard compliant
>     } catch(ex) {
>       eSelect.add(eNewOption);           // for ie only
>     }
> }//;
>
> function clearPreviusOptions() {
>   var eSelect = document.getElementById("cbosubcategory");
>   if(eSelect.length > 1) {
>     for(i=1;i<eSelect.length;i++) {
>       //~ eSelect.options[i]=null;
>       eSelect.remove(i);
>     }
>   }
> }//;
>
> function getNumItems() {
>   var eSelect = document.getElementById("cbosubcategory");
>   clearPreviusOptions(eSelect, eSelect.length);
> }//;
>
> function init() {
>   var eCategory = document.getElementById("cbocategory");
>   addEvent(eCategory, "click", clearPreviusOptions, false);
>   addEvent(eCategory, "change", getData, false);
> }//;
>
> addLoadEvent(init);
>
> Espero puedan ayudarme con este tema.
>
> Saludos.
>
> --
>
>
> -------------------------------------------------------------
> _o)  Yurk!
>   // \  Linux Registered User #418034
> U_/_
>
> Dile NO al top-posting[*]
> [*] ttp://es.wikipedia.org/wiki/Top-posting
> -------------------------------------------------------------
> _______________________________________________
> javaEScript mailing list
> javaEScript en scriptia.net
> http://lists.scriptia.net/listinfo.cgi/javaescript-scriptia.net
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.scriptia.net/pipermail/javaescript-scriptia.net/attachments/20070531/9ca7b3fc/attachment.htm 


Más información sobre la lista de distribución javaEScript