2014-03-27 4 views
1

У меня есть textfield в приложении. Но этот текстовый файл должен позволять пользователю вводить только десятичные значения, также десятичная точность должна быть до 3.Как разрешить десятичное значение только в текстовом поле Сенча?

Я никогда не мог найти решение для этого. Все решения, которые я нашел здесь, и другие будут работать только для Extjs не с senchaTouch.

Любая помощь с решением SenchaTouch или простое решение JavaScript для этого приветствуются.

+0

Вы можете увидеть это: http://sureshdotariya.blogspot.in/2013/04/add-phone-number-input-text-field-in.html –

+0

Это никогда не будет работать в моем сценарии, потому что это приложение также для приложения для магазина Windows8, поэтому пользователь может напрямую ввести значение через свою клавиатуру. – CoolMonster

ответ

0

Возможно использование типа numberfield xtype.

+0

Я тоже это пробовал, но он позволяет пользователю вводить все символы. – CoolMonster

0
Ext.apply(Ext.form.VTypes, { 
    numeric: function (v, field) { 
     var customRegEX = /^[0-9]/i; 
     return customRegEX.test(v); 
    }, 
    numericText: "Text must be numeric", 
    numericMask: /^[0-9]/i }); 

Создайте vtype и примените его в текстовом поле.

vtype: numeric 
+1

В SenchaTouch отсутствует поддержка vtype, только для EXtJs. – CoolMonster

0

numberfield является правильным в использовании. попробуйте вот так

{ 
         xtype: 'numberfield', 
         id: 'numfield', 
         itemId: 'numfield', 
         label: 'Number', 
         name: 'num', 
         required: true 
        }, 
1

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

Современные версии рамки 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(3); // where 3 is your decimal precision value 
      return (isNaN(value)) ? '' : value; 
     } 
    }); 

Удачи.

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