2016-12-27 5 views
2

Мне нужно использовать числовое поле в sencha extjs 6, но по умолчанию числовое поле допускает десятичный ввод. Мое приложение не требуется десятичный ввод. Пробовал allowDecimals: false, Он может работать на текстовом поле. Существуют ли какие-либо конфиги или способы отключения ввода? Примечание: на ПК я могу написать метод для его предотвращения, но мое приложение работает на мобильное устройство поэтому я понятия не имею. Благодарю.Sencha Extjs 6 Как отключить десятичный ввод в поле чисел

ответ

2

Я настоятельно рекомендую использовать поле номера для этого случая. Конечно, это примет все символы в настольных браузерах. Но вы увидите, что это только принимает номера на мобильном телефоне, показывая цифровую клавиатуру.

Современные версии рамки Sencha Touch не обеспечивают десятичных параметров точности ... но есть способ преодолеть эту проблему. Просто разместите эти строки до того, как вы установите значения вашего номера.

Ext.form.Number.override ({ 

    applyValue : function(value){ 
     var minValue = this.getMinValue(), 
      maxValue = this.getMaxValue(); 

     if (Ext.isNumber(minValue) && Ext.isNumber(value)) { 
      value = Math.max(value, minValue); 
     } 

     if (Ext.isNumber(maxValue) && Ext.isNumber(value)) { 
      value = Math.min(value, maxValue); 
     } 

     value = parseFloat(value).toFixed(0); // where 0 is your decimal precision value 
     return (isNaN(value)) ? '' : value; 
    } 
}); 

В этом примере вы можете увидеть реализацию:

Ext.application({ 
    name: 'Fiddle', 

    launch: function() { 
     Ext.form.Number.override({ 

      applyValue: function (value) { 
       var minValue = this.getMinValue(), 
        maxValue = this.getMaxValue(); 

       if (Ext.isNumber(minValue) && Ext.isNumber(value)) { 
        value = Math.max(value, minValue); 
       } 

       if (Ext.isNumber(maxValue) && Ext.isNumber(value)) { 
        value = Math.min(value, maxValue); 
       } 

       value = parseFloat(value).toFixed(0); // where 0 is your decimal precision value 
       return (isNaN(value)) ? '' : value; 
      } 
     }); 
     Ext.create({ 
      xtype: 'window', 
      width: 200, 
      height: 200, 
      items: [{ 
       xtype: 'numberfield' 
      }] 
     }).show(); 
    } 
}); 

Here is a working fiddle

+0

Спасибо за ваши отзывы, но так как я новичок в сенча вы можете показать мне, как это осуществить? –

+0

@PhonSoyang, пожалуйста, отметьте ответ как правильно, если он работает, я добавил скрипку sencha, чтобы показать вам, как это работает. –

+0

На самом деле, я не хочу десятичного ввода в поле чисел, но ваш валидатор на десятичной основе. –

Смежные вопросы