2012-03-03 17 views
5

¿Cómo especifico un carácter opcional en una máscara de entrada?Carácter opcional en la máscara de entrada

Encontré este complemento de entrada enmascarado http://digitalbush.com/projects/masked-input-plugin/ y estas definiciones de máscara.

$.mask.definitions['g']="[ ]"; 
$.mask.definitions['h']="[aApP]"; 
$.mask.definitions['i']="[mM]"; 
$.mask.definitions['2']="[0-1]"; 
$.mask.definitions['6']="[0-5]"; 
new_mask = "29:69"; 
$("#txtTime").mask(new_mask); 

Define una máscara de entrada para un formato de hora de 12 horas, p. 11:00. Me gustaría permitir que el usuario especifique solo un dígito para la "hora". En lugar de tener que escribir 01:00, el usuario debería poder escribir 1:00. ¿Cómo puedo hacer eso?

Respuesta

3

Debe utilizar ? para caracteres opcionales, por lo que en su caso debe usar "2?9:69".

+1

Pero esto todavía no permite que el usuario especifique un solo carácter por hora. Cuando hago clic fuera del campo de entrada, la máscara pone los minutos para el dígito de la hora que falta. – user823527

+2

Buena captura, parece un error en el complemento. Lamentablemente, no conozco una buena solución a menos que modifiques el plugin. –

3

Cita y el ejemplo de the page se enlazó en su pregunta:

Usted puede tener parte de su máscara sea opcional. ¿Algo listado después de '?' dentro de la máscara se considera una entrada de usuario opcional. El ejemplo común para esto es el número de teléfono + extensión opcional.

jQuery(function($){ 
    $("#phone").mask("(999) 999-9999? x99999"); 
}); 
0

Puede utilizar $.mask.definitions['g']="[0-9 ]";

0

Tengo un problema similar que estoy tratando de resolver para los importes de moneda variables ($ 0,00 - $ 10000.00), y yo realmente no entender cómo el plugin está funcionando.

Por un lado, el bit $.mask.definitions['symbol'] = '???' parece que es el empleo de un fragmento de expresión regular, en base a los ejemplos en la referencia de API, y algo confirmado por esta parte en la fuente, en el código de la función mask:

$.each(mask.split(""), function (i, c) { 
    if (c == '?') { 
     len--; 
     partialPosition = i; 
    } else if (defs[c]) { 
     tests.push(new RegExp(defs[c])); 
     if (firstNonMaskPos == null) 
      firstNonMaskPos = tests.length - 1; 
    } else { 
     tests.push(null); 
    } 
}); 

... Por otra parte, una definición de máscara de []|[0-9] no funciona (estoy intentando hacer una cadena vacía o 0-9, para aquellos que no saben leer y escribir en expresiones regulares). Como referencia, estoy intentando construir una máscara para cumplir la condición de 0.00-10000.00 como oooo9.99, donde o es []|[0-9].

Dado que el código confirma que esto se basa en expresiones regulares, el patrón nulo o de rango debería estar funcionando pero no lo está; este es un error más oscuro en el marco de la máscara. A menos que I intente hacer algo incorrectamente, que también es posible ...

Cuestiones relacionadas