Foros del Web » Programando para Internet » Javascript »

Otra alternativa para mostrar 5 campos o menos usando javascript/DOM

Estas en el tema de Otra alternativa para mostrar 5 campos o menos usando javascript/DOM en el foro de Javascript en Foros del Web. Que tal mis estimados... de nuevo por aca, bueno esta ves les traigo un script que modifiqué, el script lo encontré en esta pag Fuente ...
  #1 (permalink)  
Antiguo 11/10/2007, 12:08
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 9 meses
Puntos: 4
Otra alternativa para mostrar 5 campos o menos usando javascript/DOM

Que tal mis estimados... de nuevo por aca, bueno esta ves les traigo un script que modifiqué, el script lo encontré en esta pag Fuente

solo que a mi no me parecio buena la funcionalidad de hacer cllick en un enlace y agregar los campos, así que me las arreglé para que funcionará mediante un combo, y para probar la pag aca esta el vinculo -> Nuevo Script

en resumen, el codigo javascript/dom que apliqué es el siguiente:
Código PHP:

var numero 0;
var 
optionAnterior 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   
return document.createElement(tag);
}
= function (id) { // Retorna un elemento en base al id
   
return document.getElementById(id);
}

//esta función obtiene el número de campos a agregar/eliminar y resta o suma dependiendo
//del número elegido en el combo y por lo tanto ejecuta la funcion correspondiente
controlador = function (combo) {
    if(
combo.value != 0){
       
container d('files');
        var 
optionActual combo.selectedIndex;
        
optionAnterior container.childNodes.length;
        if(
optionActual optionAnterior){
            
cantidad optionActual-optionAnterior;
            
agregarCampo(cantidad);    
        }else{
            
cantidad optionAnterior optionActual;
            
quitarCampo(cantidad);
        }
    }
}

//esta función se ejecuta cuando se quiere construir un campo file
constructor = function (){
    
span c('SPAN');
       
span.className 'file';
       
span.id 'file' + (++numero);

       
field c('INPUT');   
       
field.name 'archivos[]';
       
field.type 'file';
}

//funcion para agregar un campo file
agregarCampo = function(cantidadAdd){
    for(
j=1;j<=cantidadAdd;j++){
         
constructor();//llamada a constructor
        
span.appendChild(field);
        
container.appendChild(span);
    }
}
//funcion para eliminar un campo file
quitarCampo = function(cantidadQt){
    for(
k=1;k<=cantidadQt;k++){
        var 
borrarlo container.lastChild;
        
container.removeChild(borrarlo);
    }
}
//carga el número de valores que contendrá el combo
//solo por pereza y para no tener que escribir cada uno con option
loadNumFiles = function(idCampo,num){
    var 
img document.getElementById(idCampo);
    for(
i=1;i<=num;i++){
        
img.options[img.options.length]=new Option(i,i);
    }

Y este es el codigo HTML:

Código PHP:
<body onload="loadNumFiles('addFiles',5);">

<
form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">
        <
dl>
                <
dt><label for="to" accesskey="1">Para</label></dt>
                <
dd><input type="text" name="to" id="to" size="60" /></dd>
               
                <
dt><label for="from" accesskey="2">De</label></dt>
                <
dd><input type="text" name="from" id="from" size="60" /></dd>
               
                <
dt><label for="sbj" accesskey="3">Asunto</label></dt>
                <
dd><input type="text" name="sbj" id="sbj" size="60" /></dd>
               
                <
dt><label for="msg" accesskey="4">Mensaje</label></dt>
                <
dd><textarea id="msg" name="msg" rows="7" cols="45"></textarea></dd>
               
                <
dt><label>Archivos Adjuntos:</label>
                <
select name="addFiles" id="addFiles" onchange="controlador(this)">
                <
option value="0">Node Imágenes</option>
                </
select></dt>
                <
dd><div id="files"></div></dd>
                <
dd><input type="reset" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>
   </
dl>
</
form>
</
body
La funcionalidad es la misma que en la página fuente, solo que yo lo hice mendiante un combo, y al momento de borrar algún campo file, se borran los ultimos, es decir si hay 5 campos files creados y solo quieres 3, entonces se borran los campos files 4 y 5, espero haberme explicado.

Saludos y agradecer no cuesta nada.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::

Última edición por Gerifaltus; 11/10/2007 a las 12:43 Razón: Al parecer el título sonaba más a pregunta que a propuesta de solución :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 17:25.