Foros del Web » Programando para Internet » Javascript »

Reemplazar campos.

Estas en el tema de Reemplazar campos. en el foro de Javascript en Foros del Web. Hola. Estoy de nuevo molestando con algunos problemas que tengo en JavaScript, lo que necesito es una función que, por ejemplo, tengo un select que ...

  #1 (permalink)  
Antiguo 18/06/2009, 11:19
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Reemplazar campos.

Hola.

Estoy de nuevo molestando con algunos problemas que tengo en JavaScript, lo que necesito es una función que, por ejemplo, tengo un select que me despliega una lista que toma ciertos valores de una BD, lo que yo busco es que al momento de seleccionarla se transforme/reemplace esa lista con una caja de texto con el valor que elegí, he visto que se puede hacer con "document.createElement" aunque la verdad no estoy muy seguro de cómo o dónde debo utilizarlo.

Sí se pudiera hacer eso, me gustaría saber si se puede que en vez de que aparezca la caja de texto, se imprima simplemente el valor, ¿es posible hacer esto?

Espero puedan ayudarme, gracias de antemano.

Saludos.
  #2 (permalink)  
Antiguo 18/06/2009, 11:35
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: Reemplazar campos.

Puedes reemplazar el elemento así:
Código javascript:
Ver original
  1. var lista = document.getElementById("id_del_select");
  2. var texto = document.createElement("input");
  3. texto.type = "text";
  4. texto.value = lista.value;
  5. lista.parentNode.replaceChild(texto, lista);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 18/06/2009, 11:43
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

¿Hay manera de ejecutar 2 funciones en un onchange? es que también uso otra.
  #4 (permalink)  
Antiguo 18/06/2009, 11:48
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: Reemplazar campos.

Usando el separador de instrucciones:
Código javascript:
Ver original
  1. funcion1(); funcion2();
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 18/06/2009, 12:03
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Muchas gracias, ya funcionó.

Tengo otra pregunta, habrá manera de que el valor se imprima sin la caja de texto, borrarle los bordes, o cambiarle el color para que no se vean, ¿alguna de éstas opciones es posible?

Saludos.
  #6 (permalink)  
Antiguo 18/06/2009, 12:08
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Reemplazar campos.

en lugar de crear una caja de texto crea un TextNode y reemplaza el HTMLSelect con el TextNode.
Código:
var lista = document.getElementById("id_del_select");
var texto = document.createTextNode(lista.value);
lista.parentNode.replaceChild(texto, lista);
sino, la otra alternativa es utilizar estilos para dar la apariencia de ser un texto normal, pero aclaro que seguira siendo un input text y la altura de este puede confligir con la altura de la linea de texto.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 18/06/2009, 12:31
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Así es justo como lo quería, hehe muchas gracias a ambos.

EDIT: Otra pregunta, al momento de elegir la opción se desaparece la lista, entonces si me llego a equivocar al elegir la opción, planeo hacer un botón que resetée sólo el form, no toda la página, y así pueda volver a elegir si me equivoqué, ¿cómo sería la función para esto?.

Y si me pudieran ayudar con esta otra pregunta, les estaría muy agradecido, me gustaría que al momento de dar Imprimir o Vista preliminar o ambos los botones que mencioné anteriormente no aparezcan, osea que se vean en pantalla, pero no al momento de imprimir, ¿me explico?

Se los agradezco de antemano.

Saludos.

Última edición por Gaug; 18/06/2009 a las 12:37
  #8 (permalink)  
Antiguo 18/06/2009, 17:29
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

EDIT: Necesito crear una función para un botón que resetee un campo, si por ejemplo tenía el select que toma valores de la BD, con las función que me dieron ustedes, reemplace ese select, entonces este botón debe de "resetearlo" por así decirlo, pero sin refrescar la página.

Se me ocurrió algo como esto:
Código javascript:
Ver original
  1. function crearselect1() {
  2.       var texto= document.getElementById("centro_costo");
  3.       var lista= document.createElement("select");
  4.       texto.parentNode.replaceChild(lista, texto);
  5.       }

Pero no tengo una idea clara de como ordenarlo, el select se llama "centro_costo" y el botón se llama "boton1", además aunque creara el select, ¿éste volvería a tomar los valores de la BD? ¿qué me recomiendan hacer?

Gracias de antemano, saludos.

Última edición por Gaug; 18/06/2009 a las 18:35
  #9 (permalink)  
Antiguo 18/06/2009, 19:29
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: Reemplazar campos.

¿Y si en vez de reemplazar el select simplemente lo ocultas? Con lista.style.display = "none"; lo ocultas y con lista.style.display = "block"; lo vuelves a mostrar. El texto puede estar en un <span> (por ejemplo) y también sigue la misma mecánica, lo ocultas cambiando su estilo display.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 18/06/2009, 19:44
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Se me ocurrió una forma mejor y laboriosa al menos para mi, como tengo que hacer muchos botones de esos para cada campo, preferí hacer 2 veces los campos, sólo que separados por un "if(isset..." con un sólo botón que resetée los campos.

Ahora mi problema es que quiero crear un botón de imprimir, y que al darle click me desaparezca en un determinado tiempo ambos botones, el de "Limpiar campos" y el de "Imprimir"; para que cuando termine la impresión vuelvan a aparecer y poder a volver a limpiar los campos si es necesario, lo que quiero es que no salgan estos botones en la impresión, ¿me explico?

¿Alguna forma para hacer esto?

Saludos.
  #11 (permalink)  
Antiguo 18/06/2009, 19:48
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: Reemplazar campos.

No es necesario que los desaparezcas al momento de imprimir. Basta con crear una hoja de estilos para impresión (media=print) con el cual ocultas los elementos que no quieres mostrar:
http://www.csslab.cl/?p=15
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 19/06/2009, 08:04
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Oh gracias, es justo lo que necesitaba, pero ¿cómo aplico ésta hoja de estilos para los botones solamente? no estoy muy familiarizado con CSS.

Y pénsandolo mejor, usaré el método que me mencionaste de "style.display" ya que tengo que hacer botones individuales para cada campo, sólo que como te digo, me imagino que al seleccionar la opción, me escondería la lista, y me mostraría solamente el texto, y al darle click, me aparecería la lista de nuevo, ¿no?, pero y el texto también seguiría ahí, ¿cómo soluciono eso?

Saludos.
  #13 (permalink)  
Antiguo 19/06/2009, 09:18
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: Reemplazar campos.

El texto lo puedes ocultar también con style.display = "none" (estando en una etiqueta cualquiera, como <span> o <div> o lo que sea)

En cuanto a la hoja de estilos, puedes asignar un class a los elementos que no quieres que se vean en la impresión. Por ejemplo:
Código html:
Ver original
  1. <button type="button" class="noprint">Imprimir</button>
Código css:
Ver original
  1. .noprint {
  2.     display: none;
  3. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 19/06/2009, 09:44
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Ah muchas gracias, pero el problema ahora es que tampoco me aparece en pantalla hehe.

Saludos.
  #15 (permalink)  
Antiguo 19/06/2009, 10:01
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: Reemplazar campos.

¿Le has agregado el media="print" a la referencia a la hoja de estilos?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 19/06/2009, 10:27
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Es cierto, se me pasó ponerlo, pero ya lo probé y funciona a la perfección, muchas gracias por tu ayuda.
  #17 (permalink)  
Antiguo 19/06/2009, 10:52
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Hice un <span> en vez de un <div>, algo así

Código javascript:
Ver original
  1. <span id="boton1" onclick="document.forms.tipo.style.display='none'"><input type="button" id="boton" name="boton" value="Limpiar" /></span>

El select se llama tipo, ¿qué es lo que está mal?

Saludos.
  #18 (permalink)  
Antiguo 19/06/2009, 10:59
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: Reemplazar campos.

mmm... La idea era que el span esté al lado del select. Así, puedes ocultar el span y mostrar el select y viceversa.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #19 (permalink)  
Antiguo 19/06/2009, 11:22
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Tengo esto:

Código javascript:
Ver original
  1. <span id="menu1"><select name="tipo" id="tipo" >
  2.           <option value="asdf">asdf</option>
  3.         </select>
  4.         </span>
  5.         <input type="button" id="boton" name="boton" value="Limpiar" onclick="document.menu1.tipo.style.display='none'" />

Pero aún así eso me desaparece el select y eso no es lo que quiero, se supone que al elegir una opción del select, se me crea un textnode, y lo que busco es que al darle click me desaparezca ese textnode y me vuelva a aparecer el select.

La función que me dieron arriba es para reemplazarlo, me imagino que tengo que cambiar ese "replaceChild", ¿usaría el "style.display"? o ¿cómo sería?

Saludos y de nuevo gracias por tu ayuda David.
  #20 (permalink)  
Antiguo 19/06/2009, 11:31
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: Reemplazar campos.

Mira, la idea es esta:
Código html:
Ver original
  1. <span id="stipo"></span><select id="tipo">...</select>
Así, no necesitas usar el replaceChild. Sólo cuando quieras mostrar el texto haz esto:
Código javascript:
Ver original
  1. var texto = document.getElementById("stipo");
  2. var lista = document.getElementById("tipo");
  3. texto.innerHTML = lista.value;
  4. texto.style.display = "block";
  5. lista.style.display = "none";
Y cuando quieras volver a mostrar la lista, ocultas el texto y muestras la lista (cambiando su estilo display), ¿se entiende?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #21 (permalink)  
Antiguo 19/06/2009, 11:42
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Ya entendí la idea, el problema es que por ejemplo tengo algo así:

Código javascript:
Ver original
  1. Tipo: <span id="stipo"></span><select id="tipo">...</select>

y al momento de convertirlo en texto se brinca el renglón, ¿cómo podría evitar esto?
  #22 (permalink)  
Antiguo 19/06/2009, 12:02
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: Reemplazar campos.

En lugar de display = "block" prueba usando display = "inline"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #23 (permalink)  
Antiguo 19/06/2009, 12:37
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Listo, ya funcionó.

¿Cómo hago referencia con el botón para mandar a llamar la función a la inversa?

Intenté cambiar la ruta de las variables y poner el getElementById, pero no me funcionó.

De nuevo agradezco tu atención, saludos.
  #24 (permalink)  
Antiguo 19/06/2009, 12:55
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: Reemplazar campos.

Con getElementById debería funcionar sin problemas, ¿cómo lo intentaste?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #25 (permalink)  
Antiguo 19/06/2009, 12:59
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

La función en este caso se llama mostrar para mostrar el texto, y ocultar para ocultarlo, valga la redundancia, tengo esto así en el botón:

Código javascript:
Ver original
  1. <input type="button" id="boton" name="boton" value="Limpiar" onclick="ocultar();" />

La función ocultar está así:
Código javascript:
Ver original
  1. function ocultar() {
  2.  
  3.       var texto = document.getElementById("stipo");
  4.       var lista = document.getElementById("tipo");
  5.       texto.innerHTML = lista.value;
  6.       texto.style.display = "none";
  7.       lista.style.display = "inline";
  8.       }

Habia intentado poner en las variables "document.stipo.tipo.getElementById" pero no me funcionó.

Saludos.
  #26 (permalink)  
Antiguo 19/06/2009, 13:01
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: Reemplazar campos.

Debería funcionar, ¿seguro que esos son los id que asignas a los elementos?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #27 (permalink)  
Antiguo 19/06/2009, 13:07
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Sí, pero ten en cuenta que la función la estoy ejecutando desde el botón, ¿no será ése el problema?, según tengo entendido tengo que hacer referencia desde el botón al span y el select.
  #28 (permalink)  
Antiguo 19/06/2009, 13:10
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: Reemplazar campos.

No debería causar problemas aunque llames a la función desde el botón. Revisa la Consola de Errores de tu navegador para saber si se está produciendo algún error.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #29 (permalink)  
Antiguo 19/06/2009, 13:18
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Reemplazar campos.

Me marca error en esta línea:

Código javascript:
Ver original
  1. texto.innerHTML = lista.value;
  #30 (permalink)  
Antiguo 19/06/2009, 13:23
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: Reemplazar campos.

Si vas a ocultar el <span>, esa línea no va a ser necesaria; por lo que puedes quitarla (aunque no debería dar problemas ), ¿cuál es el error que marca?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 18:25.