martes, 23 de diciembre de 2008

Chile, país bananero.

No me extrañaría que lo elijan senador para la próxima elección...

lunes, 22 de diciembre de 2008

Crear campos de formulario con javascript

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.