
14/07/2011, 02:08
|
 | | | Fecha de Ingreso: octubre-2008 Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años, 4 meses Puntos: 66 | |
Respuesta: alguien sabe que pasa con esto hola,
lo que pasa es que tu función cada vez que hay tres caracteres añade un guión (en el caso del primer textbox). cuando borras el guión detecta que hay tres caracteres, y vuelve a poner un guión, y así hasta el infinito. puedes añadir que vigile el evento de tecla, y si es retroceso, o flecha izquierda o suprimir que no haga nada.
pero aún así te vas a volver un poco loco, si tratas de perfeccionarla al máximo. porque, por ejemplo, si con el ratón pinchas entre el primer y el segundo caracter, eso no lo rescata tu función, y no es un evento de teclado. pero bueno si quieres seguir adelante, te paso un apaño a tu función, para que, al menos, detecte la tecla de retroceso y borre el guión en cualquier caso:
----------------------------
function mask(str,textbox,loc,delim)
{
var tecla;
tecla = (document.all) ? event.keyCode : event.which;
if(tecla != 8)
{
var locs = loc.split(',');
for (var i = 0; i <= locs.length; i++)
{
for (var k = 0; k <= str.length; k++)
{
if (k == locs[i])
{
if (str.substring(k, k+1) != delim)
{
str = str.substring(0,k) + delim + str.substring(k,str.length);
}
}
}
}
textbox.value = str
}
}
-------------------------
con esto puedes preguntar si la tecla es retroceso, flecha izquierda, suprimir o lo que sea, y evitarás que haga lo que ahora está haciendo. pero ya te digo que el usar el ratón no lo detecta el evento de teclado.
si quieres un consejo, es más fácil usar el evento onblur del textbox, y formatear el texto al salir del campo. además le puedes añadir con expresiones regulares que evite teclear guiones o lo que quieras.
saludos. |