Foros del Web » Programando para Internet » Javascript »

Diferencia entre OnChange y OnKeyPress

Estas en el tema de Diferencia entre OnChange y OnKeyPress en el foro de Javascript en Foros del Web. Cual es la diferencia.. alguien sabe?...
  #1 (permalink)  
Antiguo 17/10/2006, 11:15
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Pregunta Diferencia entre OnChange y OnKeyPress

Cual es la diferencia.. alguien sabe?
  #2 (permalink)  
Antiguo 17/10/2006, 11:28
Avatar de skatomundo  
Fecha de Ingreso: junio-2002
Ubicación: Santiago - CL
Mensajes: 2.532
Antigüedad: 22 años
Puntos: 125
No hay traducción??

Onchange: "El valor de un campo de formulario cambia"

onKeyPress: "El usuario mantiene pulsada una tecla"
algo parecido al "onKeyDown" (cuando se presiona) onKeyUp (cuando se suelta)
  #3 (permalink)  
Antiguo 17/10/2006, 11:32
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
La cosa es que tengo un textbox y una funcion javascript en el onchange, y esta no se ejecuta cuando presiono control + v para pegar algún texto
  #4 (permalink)  
Antiguo 17/10/2006, 11:36
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
si es on change es cuando cambia... supongo
y si pego algo en el textbox entonces cambió
  #5 (permalink)  
Antiguo 17/10/2006, 13:23
Avatar de HiTek  
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 0
Cita:
Iniciado por Developer9 Ver Mensaje
si es on change es cuando cambia... supongo
y si pego algo en el textbox entonces cambió
coloca la función que estás utilizando...quizás haya algo por ahí...
¿Al perder el foco el objeto, tampoco ejecuta la función?


salu2
  #6 (permalink)  
Antiguo 17/10/2006, 14:45
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Hola amigo... la cosa es que en el keypress tengo una función para hace que solo se permita ingresar numeros y se formatee automáticamente a dos decimales. La cosa es cuando hago un CTRL + C en algún otro lado y luego un CTRL + V en el textbox en cuestión si se me pegan letras, y en el caso de que lo pegado sean numeros no se me formatea a dos decimales, también cuando hago un select en la base y asigno un valor de la base al textbox, de la base viene con cuatro decimales y no se formatea a dos, en estos casos mi función que está en el keypress y en el onchange no vale. Puse la misma función en el onchange y tampoco me vale

La función es grandota, no creo que la vayan a analizar toda. El llamado lo hago asi:

OnKeypress="javascript:return(currencyFormat(this, '','.',event,10,2));"
OnChange="javascript:return(currencyFormat(this,'' ,'.',event,10,2));"

y la funciOncilla es esta:

Código:
function currencyFormat(fld, milSep, decSep, e,limite,decimales) { 
if (fld.value.length>limite)
	return false;
    var sep = 0; 
    var key = ''; 
    var i = j = 0; 
    var len = len2 = 0; 
    var strCheck = '0123456789'; 
    var aux = aux2 = ''; 
    var whichCode = (window.Event) ? e.which : e.keyCode; 
    if (whichCode == 13) return false; // Enter 
    key = String.fromCharCode(whichCode); // Get key value from key code 
    if (strCheck.indexOf(key) == -1) return false; // Not a valid key 
    len = fld.value.length; 
    for(i = 0; i < len; i++) 
     if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break; 
    aux = ''; 
    for(; i < len; i++) 
     if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i); 
    aux += key; 
    len = aux.length; 
   if(decimales==2)
   {
    if (len == 0) fld.value = ''; 
    if (len == 1) fld.value = '0'+ decSep + '0' + aux; 
    if (len == 2) fld.value = '0'+ decSep + aux; 
    if (len > 2) 
	{ 
     aux2 = ''; 
     for (j = 0, i = len - 3; i >= 0; i--) { 
      if (j == 3) { 
       aux2 += milSep; 
       j = 0; 
      } 
      aux2 += aux.charAt(i); 
      j++; 
     } 
     fld.value = ''; 
     len2 = aux2.length; 
     for (i = len2 - 1; i >= 0; i--) 
      fld.value += aux2.charAt(i); 
     fld.value += decSep + aux.substr(len - 2, len); 
	 }
   } 
   else
   {
	if (len == 0) fld.value = ''; 
    if (len == 1) fld.value = '0'+ decSep + '000' + aux; 
	if (len == 2) fld.value = '0'+ decSep + '00' + aux; 
    if (len == 3) fld.value = '0'+ decSep + '0' + aux; 
	if (len == 4) fld.value = '0'+ decSep + aux; 
	
    if (len > 4) { 
     aux2 = ''; 
     for (j = 0, i = len - 5; i >= 0; i--) { 
      if (j == 3) { 
       aux2 += milSep; 
       j = 0; 
      } 
      aux2 += aux.charAt(i); 
      j++; 
     } 
     fld.value = ''; 
     len2 = aux2.length; 
     for (i = len2 - 1; i >= 0; i--) 
      fld.value += aux2.charAt(i); 
     fld.value += decSep + aux.substr(len - 4, len); 
	}
   }
    return false; 
  }
  #7 (permalink)  
Antiguo 17/10/2006, 14:48
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 1 mes
Puntos: 47
Es raro!! hago un control + v en el textbox y luego de eso no me vale el tabulador, por lo tanto no sabría decir que pasa cuando pierde el foco. Si presiono un boton no funciona la funcion... es decir, no se invoca a la función. Supongo que al hacer clic en otro boton pierdo el foco
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:12.