Foros del Web » Programando para Internet » Javascript »

limpiar input

Estas en el tema de limpiar input en el foro de Javascript en Foros del Web. Buenas... Estoy armando un js para vaciar los textos del input que se a seleccionado algo asi: value Escribir... onfocus... nada pero me salta un ...
  #1 (permalink)  
Antiguo 15/06/2011, 16:35
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
limpiar input

Buenas...

Estoy armando un js para vaciar los textos del input que se a seleccionado

algo asi:

value Escribir...

onfocus... nada

pero me salta un error diciendo

"El objeto no acepta esta propiedad o metodo".

dejo el script para que sea mas facil:

Código Javascript:
Ver original
  1. function valueon(){
  2.  
  3.     frm = document.getElementByName("nombre_img");
  4.     for(i=0; i<frm.elements.length; i++){
  5.         if (frm.elements[i].value == 'Nombre de la imagen...'){
  6.             frm.elements[i].value = '';
  7.         }
  8.     }
  9.    
  10. }

y Aki como lo tengo en el from

Código HTML:
Ver original
  1. <input type="text" id="nombre_img" name="nombre_img[]" maxlength="20" onfocus="valueon()" onblur="valueout()" value="Nombre de la imagen..." style="color:#7F7F7F" />

ese es el primero, luego tengo un boton + que va repitiendo ese input en las mismas condiciones.
La idea es que al clickear sobre alguno de esos input desaparezca el texto escrito para que el usuario lo pueda utilizar mas facilmente sin tener que estar borrando pero no se que le pasa ta medio loco jaja,.

Gracias
  #2 (permalink)  
Antiguo 15/06/2011, 16:58
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: limpiar input

buenas,
primero la funcion getElementByName no devuelve un elemento unico sino una coleccion de todos los elementos con dicho valor en el atributo name. de todos modos, no importa porque la forma que lo estas implementando no tiene sentido hacerlo asi. en su lugar, deberias pasar como argumento a la funcion el keyword this al momento de invocarla y luego desde la funcion trabaja directamente sobre ese argumento. a no ser que tu proposito sea otro.
Código:
<element eventType="foo(this)">

function foo(element){
// aqui dentro trabajas con element el cual es la referencia del elemento que ha invocado a esta funcion;
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 15/06/2011, 17:13
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: limpiar input

Por cierto, en HTML5 existe la propiedad placeholder, lástima que todavía no tenga mucho soporte
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 15/06/2011, 17:30
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: limpiar input

Muchas gracias por responder!!

me sirvio zerokilled..!! dsp de tanto codigo hasta uno mismo se entrevera!

Tengo una duda...

tengo que agregarle onFocus al input que creo dinamicamente pero no me sirve de esta forma..

nImage.onFocus = "function";

lo estoy haciendo mal? como seria?.

Gracias!
  #5 (permalink)  
Antiguo 15/06/2011, 19:06
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: limpiar input

en ese caso, siempre debes escribir el nombre del evento en minuscula (sea cual sea) y como valor debes asignarle el nombre de la funcion pero no como string. sin embargo, si la funcion debe recibir parametros, entonces debes crear una funcion anonima y dentro invocar dicha funcion con el parametro requerido.
Código:
// nombre de funcion ;
element.event = foo;

// funcion anonima ;
element.event = function(){
foo(this);
};
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 15/06/2011, 19:20
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: limpiar input

u.u me perdi jaja

// nombre de funcion ;
element.event = foo;

// funcion anonima ;
element.event = function(){
foo(this);
};

como lo implemento pq no me doy cuenta esta vez >.<

element = onfocus?
  #7 (permalink)  
Antiguo 15/06/2011, 21:53
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: limpiar input

Código:
// funcion anonima ;
element.event = function(){
foo(this);
};
en ese esquema, element es la refernecia al elemento que deseas agregar el evento. supongo que en tu caso es nImage. event es el tipo de evento que deseas registrar, onfocus. foo es la funcion a invocar dentro de la funcion anonima, o sea la funcion que deseas invocar cuando el evento ocurre.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 16/06/2011, 06:37
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: limpiar input

Lo probe y no anda :/


Código Javascript:
Ver original
  1. // nombre de funcion ;
  2.     nImage.event = "onfocus";
  3.    
  4.     // funcion anonima ;
  5.     nImage.event = function(){
  6.         valueon("dsa");
  7.     };
  #9 (permalink)  
Antiguo 16/06/2011, 07:42
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: limpiar input

Cita:
Iniciado por zerokilled
event es el tipo de evento que deseas registrar, onfocus.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 16/06/2011, 07:46
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: limpiar input

u.u tienes razon _cronos que despistado que soy lo pruebo y les aviso si funca!

Muchas Gracias
  #11 (permalink)  
Antiguo 16/06/2011, 09:07
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: limpiar input

Tampoco funciona :(

lo tengo asi:

Código Javascript:
Ver original
  1. // nombre de funcion ;
  2.     nImage.onfocus = valueon;
  3.    
  4.     // funcion anonima ;
  5.     nImage.onfocus = function(){
  6.         valueon(this);
  7.     };
  #12 (permalink)  
Antiguo 16/06/2011, 10:52
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: limpiar input

Muestra el código de valueon por favor. De todas maneras, no estás entendiendo la explicación de @ZK. Para asignar una función al evento onfocus, o lo haces de una manera o de otra, pero no tiene sentido que lo hagas de las dos.
Ahora mismo no puedo pero luego te pongo un ejemplo de cada cosa, o si @ZK se me adelanta, estoy seguro de que te lo explicará mejor.
Saludos (:
Edit: El ejemplo que te decía. Tenemos dos funciones:
Código Javascript:
Ver original
  1. var fn1 = function(){
  2.  // ...
  3. };
  4.  
  5. element.onfocus = fn1;
  6. // o
  7. element.onfocus = function(){ fn1(); };
  8.  
  9. // Sin embargo
  10.  
  11. var fn2 = function(elemento){
  12.  // ...
  13. };
  14.  
  15. element.onfocus = function(){ fn2(this); };
Si te fijas en el 2º caso sólo se puede hacer de esa manera. Podrías pensar en esto:
Código:
element.onfocus = fn2(this);
Lo primero es que en este caso a onfocus no se le asignaría un handler, sino lo que devuelva la función (undefined por defecto). Además de esto, en este caso this hace referencia a window.
Espero que lo hayas entendido.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Última edición por _cronos2; 16/06/2011 a las 14:19
  #13 (permalink)  
Antiguo 16/06/2011, 14:24
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: limpiar input

Si!! Muchas gracias por tu tiempo _cronos me anda perfectamente!! aunque en IE 6 no pero ya le puse un hack para que el que tenga IE 6 actualize el navegador jaja!!

Etiquetas: input, limpiar
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 00:43.