Hace un tiempo necesité formularios cuya cantidad de campos era variable. La musa dictó la siguiente función:
function nuevoCampoForm(type,name,id,value,size){
if(type=='textarea'){
size==undefined?53:size;
var campoForm=document.createElement("textarea");
var texto=document.createTextNode(value);
colum=(size-(size%10));
filas=size%10;
campoForm.setAttribute("cols",colum);
campoForm.setAttribute("rows",filas);
campoForm.appendChild(texto);
}else{
var campoForm=document.createElement("input");
campoForm.setAttribute("value",value);
if(type=='text'){
size==undefined?32:size;
campoForm.setAttribute("type","text");
campoForm.setAttribute("size",size);
}else{
campoForm.setAttribute("type","hidden");
}
}
campoForm.setAttribute("name",name);
campoForm.setAttribute("id",id);
return campoForm;
}La función recibe 5 parámetros: type que indica el tipo de campo, los valores posibles son text, textarea y hidden; name, id, value que corresponden al atributo HTML respectivo del mismo nombre; por último size que corresponde al tamaño y que tilizaremos en los campos de tipo input text y textarea.
Si el campo que queremos crear es de tipo textarea el atributo size indicará, por medio del módulo 10, los atributos rows y cols. El valor por defecto es 53, con ello obtenemos un textarea de rows 3 y cols 50. El parámetro value lo encapsularemos dentro de una variable que encierra el metodo createTextNode(). Esta variable la insertaremos como valor del textarea con el método appendChild().
Si no es textarea el campo a crear, la función evaluará si es un campo input de tipo text o hidden. Si es del tipo text tomará size y lo establecerá como el atributo HTML del mismo nombre, si no está definido el valor por defecto será de 32. Si es hidden sólo considera name, id y value.
Luego de todas las funciones retornará un campo de formulario correspondiente a las parametros indicados. Esta función la podemos manipular con otra encargada de la generación de campos y la inserción dentrol del cuerpo o form de un documento.
Aquí pueden ver un ejemplo por cada tipo.
Si el campo que queremos crear es de tipo textarea el atributo size indicará, por medio del módulo 10, los atributos rows y cols. El valor por defecto es 53, con ello obtenemos un textarea de rows 3 y cols 50. El parámetro value lo encapsularemos dentro de una variable que encierra el metodo createTextNode(). Esta variable la insertaremos como valor del textarea con el método appendChild().
Si no es textarea el campo a crear, la función evaluará si es un campo input de tipo text o hidden. Si es del tipo text tomará size y lo establecerá como el atributo HTML del mismo nombre, si no está definido el valor por defecto será de 32. Si es hidden sólo considera name, id y value.
Luego de todas las funciones retornará un campo de formulario correspondiente a las parametros indicados. Esta función la podemos manipular con otra encargada de la generación de campos y la inserción dentrol del cuerpo o form de un documento.
Aquí pueden ver un ejemplo por cada tipo.






















4 comentarios:
genial man gracias puede serme muy util despues
es muy bueno, justo lo que estaba buscando, me salvaste la vida creo, jaja saludos!
Muchas gracias por las funciones. Quisiera saber si sabes la forma en la cual mandar los valores de ese 'n' numero de campos creados, por ejemplo con POST para ser insertados en una BD.Gracias :D
Te podría ayudar más si me dices con qué lenguaje procesas los datos enviados. :)
Publicar un comentario en la entrada