Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/04/2009, 07:47
matak
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: mascaras para Float, Int y hora

Esta segunda es un poco más compleja y es para formato float

Código javascript:
Ver original
  1. //////////////////////////////////////////////////
  2. ////////////////// By Matrak /////////////////////
  3. /* Especificacion */
  4. // ob   ->  Objeto input text
  5. // n    ->  Nº de digitos de la parte entera
  6. // d    ->  Nº de digitos de la parte flotante
  7. // sin  ->  (true) o (false)
  8. //          -true: quiere decir que podra tener M digitos enteros si no hay parte flotante
  9. //            ej: 99.99% si pero 100% sin decimales porque no vale 100.02%
  10. //          -false: Se comporta que cuando ya hay introducido n digitos y metemos 1 mas pone el '.' entre medio
  11. // M    ->  M digitos sin parte flotante
  12.  
  13. //ejemplos de imputs
  14. //
  15. //<input name="digitos" type="text" onkeyup="maskFloat(this,2,3,true,3,true)">
  16. //
  17. //<input name="digitos" type="text" onkeyup="maskFloat(this,2,3,true,4,false)">
  18. //
  19. //<input name="digitos" type="text" onkeyup="maskFloat(this,2,3,false)">
  20.  
  21. function maskFloat(ob,n,d,sin,M,gen) {
  22.   if (!sin) M=n+1;
  23.  
  24.   if (n>=M) {
  25.     alert("error en la especificación de la funcion: n < M");
  26.     ob.value='';
  27.     return false;
  28.   }
  29.   /* Solo numero y solo un '.' */
  30.   if (/[^0-9\.]/.test(ob.value[ob.value.length-1])) ob.value=ob.value.slice(0,ob.value.length-1)
  31.   else if (/^\./.test(ob.value[ob.value.length-1]) && /\d*\.\d*\./.test(ob.value)) ob.value=ob.value.slice(0,ob.value.length-1)
  32.  
  33.   posDec = ob.value.indexOf(".");
  34.  
  35.   if (/\d*\.\d*/.test(ob.value) && posDec<M){
  36.     if (/^\./.test(ob.value)) ob.value='0.';
  37.    
  38.     numero=ob.value.split('.')
  39.    
  40.     if (numero[1].length>d)
  41.         ob.value=ob.value.slice(0,ob.value.length-1)
  42.  
  43.     return true;
  44.   }else{
  45.     if (sin) {
  46.    
  47.       if (gen){
  48.         /*Caso generico*/
  49.         if (ob.value.length>M) {
  50.           ob.value=ob.value.slice(0,ob.value.length-1)
  51.         }
  52.       }else{
  53.      
  54.         /*Para % este caso (todo que pasa de 100% se queda en 100% y sin decimales)*/
  55.      
  56.         if (ob.value.length==M){
  57.           if (/[^\.]/.test(ob.value[ob.value.length-1]))
  58.             ob.value=100;
  59.         }else if (ob.value.length>M){
  60.             ob.value=100;
  61.         }
  62.      
  63.       /*--------*/
  64.       }
  65.      
  66.     }else {
  67.       if (ob.value.length>n) {
  68.         ob.value=ob.value.slice(0,ob.value.length-1)+'.'+ob.value.slice(ob.value.length-1,ob.value);
  69.       }
  70.     }
  71.  
  72.     return true;
  73.   }
  74.  
  75. }
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!