Foros del Web » Programando para Internet » Javascript »

crear un input type=text o textarea al hacer click

Estas en el tema de crear un input type=text o textarea al hacer click en el foro de Javascript en Foros del Web. Hola foreros: Recién estoy comenzando con JS, detenidamente, pues lo había trabajado de lejos, confieso que me está gustando, pero como todo aprendiz me ha ...
  #1 (permalink)  
Antiguo 10/04/2009, 13:22
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
crear un input type=text o textarea al hacer click

Hola foreros:
Recién estoy comenzando con JS, detenidamente, pues lo había trabajado de lejos, confieso que me está gustando, pero como todo aprendiz me ha surgido esta duda.
Tengo dos días googleando, y he buscado en las FAQs del foro, pero nada que siquiera me ilustre, claro, pasa que el problema quizás sea muy puntual.
Bueno, lo que quiero es precisamente, tengo unos divs que cargan datos desde una consulta SQL, pero deseo que al hacerles click se conviertan en campos "text" o "textarea". Según el caso (cantidad de caracteres)
Cualquier ayuda me vendría bien, aclaro que no serían necesarios, de momento, que se desgasten en códigos que le roben mucho tiempo (si lo hacen pues mucho mejor ¿no? jajajaja), pero me conformaría con que alguien me de por lo menos la idea de como hacerlo.
Saludos y agradecido
  #2 (permalink)  
Antiguo 10/04/2009, 13:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: crear un input type=text o textarea al hacer click

Puedes usar document.createElement("input") o document.createElement("textarea") para crear esos elementos, luego, puedes llamar al método replaceChild() del nodo padre que contiene al div para reemplazarlo por el elemento deseado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 11/04/2009, 06:32
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

Hola, lo siento, ayer escribí justo antes de irme del trab y releo ahora por la mañana.
OK, trateré de implementar e informo luego, pienso pasarme el día de hoy en esto.
hasta más tarde
salu2
  #4 (permalink)  
Antiguo 11/04/2009, 10:56
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

Código HTML:
                td3 = document.createElement("input");
		td3.type = "text";
		td3.setAttribute("name",own.id);
		divConvierte.appendChild(td3);
OK, esto es lo que he ido resolviendo, pero al crearse el elemento, cuando hago clic dentro vuelve a crearse otro
¿porque pasa?
¿qu estoy haciendo mal?
  #5 (permalink)  
Antiguo 11/04/2009, 11:07
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

Bueno, creo q ya lo he resuelto. Sustituí

divConvierte.appendChild(td3);

por

divConvierte.parentNode.appendChild(td3);

Aun me queda la duda, y en este tiempo que he tenido para leer no me aclaro.
¿Q quiere decir esto último?
  #6 (permalink)  
Antiguo 11/04/2009, 11:30
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

jejejejeejje, estoy resolviendo de a partes
Explico un poco más:
El script crea los campos, para mandarlos mediante ajax, a un php
OK
He comprobado que los input el php me los ve, pero los textarea no
Este es mi code

javascript para los textarea
Código:
                tarea = document.createElement("textarea");
		tarea.setAttribute("id",own.id);
		tarea.setAttribute("class","campoInput");
		tarea.type = "textarea";
		divConvierte.parentNode.appendChild(tarea);

para los text (input)
Código:
                td3 = document.createElement("input");
		td3.setAttribute("id",own.id);
		td3.setAttribute("class","campoInput");
		td3.type = "text";
		divConvierte.parentNode.appendChild(td3);
Al comprobar lo que paso por URL con:
Código PHP:
echo $query =  $_SERVER['QUERY_STRING']; 
Los textarea no pasan
Otra vez
¿que estoy haciendo mal?
  #7 (permalink)  
Antiguo 11/04/2009, 11:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: crear un input type=text o textarea al hacer click

¿Cuál es el código que usas para enviar esos campos con AJAX?

P.S.: Los textarea no tiene atributo type, por lo que tarea.type = "textarea" está sobrando.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 13/04/2009, 08:36
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

Código:
function validaFormulario(id){

	var miValor = new Array();	
	var miID = new Array();	
	var cadena = new Array();

	divEditaProceso = document.getElementById('editarProceso');

	for (i = 0; i < fvalida.elements.length; i++) {	
		if (fvalida.elements[i].type == 'text'){
			miValor[i] = fvalida.elements[i].value;
			miID[i] = fvalida.elements[i].id;
			cadena[i] = miID[i]+"="+miValor[i];
		}
	}

	cad = cadena.join("&");

	//MIRAR PARA QUITAR EL ACT, PUES LO LLAMARÉ DESDE PHP
	//EL CAMPO ID SE LLAMA ACT PARA TODAS LAS CONSULTAS DE PROCESO
	url = "editarProceso.php?act="+id+cad;

	
	ajax=objetoAjax();
	ajax.open("GET", url);

	ajax.onreadystatechange = function() {
	        if (ajax.readyState==1) {
	                divEditaProceso.innerHTML="Buscando, espere...";
		}
		else if (ajax.readyState==3){
			divEditaProceso.innerHTML = "Completando, espere...";
		}
		else if (ajax.readyState==4){
			if(ajax.status==200){
				divEditaProceso.innerHTML=ajax.responseText;
			}
			else if(ajax.status==404){
				divEditaProceso.innerHTML = "La direccion no existe";
			}
			else{
		                divEditaProceso.innerHTML = "Error: ".ajax.status;
			}
		}
	}
	 ajax.send(null)
}
BUeno, esta es la función que uso para enviar los elementos a través de ajax. Me falta validar dos o tres cosas, si pudieran darme consejos sobre ella igual, o si es esta funcion la q parece tener problemas. Agradecido de antemano.
OK, anotado lo de type del textarea
salu2
  #9 (permalink)  
Antiguo 13/04/2009, 08:38
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

David, creo q soy un tonto en MAYUSCULAS. Viendo que esta funcion es la que parece tener el problema, pues
Código:
if (fvalida.elements[i].type == 'text')
Es lo q parece estar haciendo ¿no?
Mil disculpas por mi ceguera parcial, de todas formas arreglo y les cuento.
salu2
  #10 (permalink)  
Antiguo 13/04/2009, 09:55
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: crear un input type=text o textarea al hacer click

Bueno, he resuelto el problema de los textarea (era problema mío jejeje, no del script)
Ahora se ve un poco mejor
Código:
function validaFormulario(id){

	var miValor = new Array();	
	var miID = new Array();	
	var cadena = new Array();

	divEditaProceso = document.getElementById('editarProceso');

	for (i = 0; i < fvalida.elements.length; i++) {
		if (fvalida.elements[i].value.length > 0){	
			if (fvalida.elements[i].type == 'text' || fvalida.elements[i].type == 'textarea'){
				
				miValor[i] = fvalida.elements[i].value;
				miID[i] = fvalida.elements[i].id;
				cadena[i] = miID[i]+"="+miValor[i];
			}
			
		}
	}

	cad = cadena.join("&");

	
	url = "editarProceso.php?act="+id+cad;

	
	ajax=objetoAjax();
	ajax.open("GET", url);

	ajax.onreadystatechange = function() {
	        if (ajax.readyState==1) {
	                divEditaProceso.innerHTML="Buscando, espere...";
		}
		else if (ajax.readyState==3){
			divEditaProceso.innerHTML = "Completando, espere...";
		}
		else if (ajax.readyState==4){
			if(ajax.status==200){
				divEditaProceso.innerHTML=ajax.responseText;
			}
			else if(ajax.status==404){
				divEditaProceso.innerHTML = "La direccion no existe";
			}
			else{
		                divEditaProceso.innerHTML = "Error: ".ajax.status;
			}
		}
	}
	 ajax.send(null)
}
Pero al agragar la linea que me valida el lenght del valor del campo, la página se me recarga completa. Sin actualizar AJAX
Extraño esto, por lo menos para mí
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




La zona horaria es GMT -6. Ahora son las 21:05.