2010-04-08 38 views
5

En Ext JS, el siguiente maskRe no funciona porque no pone la restricción de un máximo de 5 caracteres en el campo de texto, ¿por qué?extjs texto de entrada maskRe

{ 
    xtype: 'textfield', 
    fieldLabel: '* Zip Code', 
    allowBlank: false, 
    maskRe: /\d{0,5}/i 
} 
+0

-Cruz publicado aquí http://www.extjs.com/forum/showthread.php?t=96609 –

+0

¿El '' maskRe' apoyar la I ' modificador? Pruébalo sin. –

Respuesta

1

No estoy familiarizado con maskRe, pero mi conjetura es que usted necesita para anchor la expresión regular:

maskRe: /^\d{0,5}$/ 
5

algún motivo no se está usando la configuración maxLength? Y para garantizar valores numéricos, puede usar un NumberField en lugar de un TextField.

7

Hecho la misma validación de ayer y tenía los mismos problemas :-)
Estás confundiendo maskRe con regex. regex validará toda la cadena, maskRe filtrará la entrada de char. por lo tanto, especifique la expresión regular de validación en expresiones regulares, y solo la clase de caracteres con caracteres permitidos en maskRe, que no es necesario pero útil si no desea que los usuarios escriban AAAAA solo para que les digan que está mal.

No utilizaría NumberField en su lugar, porque lo que está intentando validar no es realmente un número, sino un código numérico, y los números negativos no están permitidos. Además, en lugar de permitir 0-5 caracteres, ¿por qué no permites exactamente 5? Esto tampoco permite el texto en blanco, por lo que allowBlank: false no es necesario.

Prueba este

regex: /^\d{5}$/i, 
maskRe: /\d/i 

HTH