2012-06-01 10 views
1

В настоящее время числовое поле extjs позволяет вводить '-' дефис других чисел в поле. как ограничить это от ввода? если я даю пользовательскую проверку vtype, она проверяется только после того, как я отправлю это.Как ограничить ввод цифр в поле extjs numberfield?

ответ

1

использовать autoStripChars и удалить дефис из разрешенных в initComponent. скорректированный код ниже.

autoStripChars: true, 
initComponent: function() { 
    var me = this, 
     allowed; 

    me.callParent(); 

    me.setMinValue(me.minValue); 
    me.setMaxValue(me.maxValue); 

    // Build regexes for masking and stripping based on the configured options 
    if (me.disableKeyFilter !== true) { 
     allowed = me.baseChars + ''; 
     if (me.allowDecimals) { 
      allowed += me.decimalSeparator; 
     } 
/* removed code 
    if (me.minValue < 0) { 
      allowed += '-'; 
     } 
*/ 
     allowed = Ext.String.escapeRegex(allowed); 
     me.maskRe = new RegExp('[' + allowed + ']'); 
     if (me.autoStripChars) { 
      me.stripCharsRe = new RegExp('[^' + allowed + ']', 'gi'); 
     } 
    } 
} 
0

Вам необходимо создать собственный тип VType. Проверка VType вызывается после каких-либо изменений в текстовое поле и у вас есть возможность настроить, какие символы могут быть введены:

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.field.VTypes

посмотрите на xxxMask собственности.

0

Вы также можете использовать обычное текстовое поле с конфигурацией maskRe.

maskRe: /[0-9]/ 
0

Как и в случае с ответом @ lagnat, который является белым, вы можете использовать черный список символов, используя конфигурацию stripCharsRe.

stripCharsRe: /-/ 

Если вы хотите ограничить отрицательные значения.

minValue: 0 
0
{ 
    minValue: 0, 
    autoStripChars: true, 
    allowExponential: false 
} 
Смежные вопросы