cambiar valor de formulario

Fran.11
Mensajes: 108
Registrado: 22 May 2012 11:23

cambiar valor de formulario

Mensaje por Fran.11 »

hola, me pueden decir como realizar la funcion para obtener o añadir el valor de un campo de texto y mediante el evento onfocus o onchange que desaparezca ese valor del campo de texto? no se si me entendeis...
para obtener o añadir dicho valor en el campo de texto realizo esta sentencia pero a partir de ahi no se como continuar: saludos...

Código: Seleccionar todo

var valor=document.getElementById("nombre").value;
Fran.11
Mensajes: 108
Registrado: 22 May 2012 11:23

Re: cambiar valor de formulario

Mensaje por Fran.11 »

he hecho este código pero necesito que cada campo de texto cambie al hacer onfocus, pero no lo consigo ya que cambian los dos al mismo tiempo...en que fallo?

Código: Seleccionar todo

function texto_valor(datos) {
   document.getElementById("nombre").value="";
   document.getElementById("apellido1").value="";
}

onfocus="texto_valor(id);
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: cambiar valor de formulario

Mensaje por Irenicus »

No te entiendo muy bien ...

¿Quieres obtener el valor de un elemento? Vas bien:

Código: Seleccionar todo

var valor = document.getElementById("nombre").value;
¿Quieres borrar el texto de un elemento? Vas bien:

Código: Seleccionar todo

document.getElementById("nombre").value = "";
¿Quieres hacer algo de lo anterior en un atributo onfocus u onchange? Vas bien:
(¡Ojo! Versión simplificada) Declara una función que lo haga por cada elemento y pon la función correspondiente en el campo onchange u onfocus de cada elemento.

Código: Seleccionar todo

function borrar_nombre() {
    document.getElementById("nombre").value = "";
}

function borrar_apellido1() {
    document.getElementById("apellido1").value = "";
}
Una opción más eficiente, sería pasar un parámetro a una función, bastándote así una sola:

Código: Seleccionar todo

function borrar_elemento(elemento) {
    document.getElementById(elemento).value = "";
}
Y pon la función correspondiente en el campo onchange u onfocus de cada elemento más el parámetro que le toque:

Código: Seleccionar todo

onfocus='borrar_elemento("nombre")'
onfocus='borrar_elemento("apellido1")'
¡Ojo final! No he probado el código, puedo haberme dejado comillas, paréntesis, etc.
Fran.11
Mensajes: 108
Registrado: 22 May 2012 11:23

Re: cambiar valor de formulario

Mensaje por Fran.11 »

he puesto esta sentencia para agruparlo todo en una funcion y no acaba de funcionar:

Código: Seleccionar todo

function borrar_elemento(elemento) {
    document.getElementById("elemento").value = "";
}
//y esta linea en cada elemento:
onfocus='borrar_elemento("nombre")'
onfocus='borrar_elemento("apellido1")'
que crees que puede fallar?
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: cambiar valor de formulario

Mensaje por Irenicus »

Las comillas, seguramente:

El siguiente código busca el id="elemento", tal cual: elemento, seguramente no exista.

Código: Seleccionar todo

function borrar_elemento(elemento) {
document.getElementById("elemento").value = "";
}
Seguramente deberías quitarlas. Para que coja el valor del parámetro elemento:

Código: Seleccionar todo

function borrar_elemento(elemento) {
document.getElementById(elemento).value = "";
}
Para facilitar tu tarea, prueba a ponerte chivatos. De este modo sabrás si has entrado en la función:

Código: Seleccionar todo

function borrar_elemento(elemento) {
alert("He entrado con el parámetro:");
alert(elemento);
document.getElementById(elemento).value = "";
}
Fran.11
Mensajes: 108
Registrado: 22 May 2012 11:23

Re: cambiar valor de formulario

Mensaje por Fran.11 »

ahora sin las comillas funciona muy bien( sin los chivatos); muchas gracias...
hablando de ello, me puedes decir como es posible que funcione sin comillas al referirte al id si generalmente se pone con comillas para referirte al atributo id en cuestion?
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: cambiar valor de formulario

Mensaje por Irenicus »

De la manera incorrecta intentas coger el elemento cuyo id es exactamente elemento.

De la manera correcta intentas coger el elemento cuyo id es igual al valor del parámetro elemento de la función.
De hecho, por eso es tan útil el uso de parámetros en funciones, porque permiten usar un elemento genérico que es definido por la llamada a la función.

Supón el siguiente ejemplo de código javascript:

Código: Seleccionar todo

function chívate (texto) {
    alert (texto);
    alert ("texto");
}

/* Lo siguiente son las llamadas a la función */
chívate ("caca"); /* Caso 1 */
chívate ("hola"); /* Caso 2 */
En el caso 1, el resultado deberían ser dos alerts, primero "caca" y después "texto".
En el caso 2, el resultado deberían ser dos alerts, primero "hola" y después "texto".

Como puedes deducir, el parámetro es diferente según la llamada, mientras que la palabra "texto" siempre es "texto".
Fran.11
Mensajes: 108
Registrado: 22 May 2012 11:23

Re: cambiar valor de formulario

Mensaje por Fran.11 »

ok muchas gracias...
otra cosa relativa a esta funcion; podria llamarse a la funcion de forma semantica? es decir directamente desde la misma funcion para que el xhtml quedase mas limpio.
intente con esta sentencia pero en algo debo fallar:

Código: Seleccionar todo

document.getElementById(elemento).onfocus=borrar_elemento;
Irenicus
Mensajes: 1238
Registrado: 19 Mar 2007 23:22

Re: cambiar valor de formulario

Mensaje por Irenicus »

Debería funcionar, aunque nunca lo he hecho, pero quizás deberías probar con esto:

Código: Seleccionar todo

document.getElementById(elemento).onfocus = function(){ borrar_elemento(elemento); };
Ya que de otro modo estarías asignando el resultado de la función borrar_elemento, en lugar de la función en sí.
Fran.11
Mensajes: 108
Registrado: 22 May 2012 11:23

Re: cambiar valor de formulario

Mensaje por Fran.11 »

no funciona; como ves lo puse asi:

Código: Seleccionar todo

function borrar_elemento(elemento){
    document.getElementById(elemento).value = "";
    document.getElementById(elemento).style.backgroundColor= "#F6FFA9";
    document.getElementById(elemento).style.border= "2px solid #e6b700";
    document.getElementById(elemento).onfocus = function(){ borrar_elemento(elemento); };
}
Responder