ExtJS: Как получить значение десятичного числа - PullRequest
2 голосов
/ 20 марта 2011

Я использовал свойство decimalSeparator в числовом поле и установил его в ',' (запятая). Теперь у меня проблемы с чтением значения как числа и выполнением математики с ним.

Сначала я попробовал просто:

var v = form.getForm().getValues().myfield / 2

Как только я наберу запятую, v станет NaN.

Тогда я попробовал:

var v = Ext.util.Format.number(form.getForm().getValues().myfield, "0.000,00") / 2

Как только я наберу запятую, v станет 0.

Я также пробовал комбинации с / i в строке формата, но id тоже не помог.

Что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 20 марта 2011

Проблема в том, что getValues работает не так, как вы ожидаете. С документация getValues (акцент мой):

Примечание. Значения собираются из всех включенных элементов ввода HTML в форме, а не из объектов Ext Field. Это означает, что все возвращаемые значения являются строками (или массивами строк) и что это значение может быть пустым текстом поля.

Если вы хотите убедиться, что у вас есть десятичное значение, вам нужно будет сделать что-то вроде следующего:

var v_string = form.getForm().getValues().myfield; //get the string
v_string = v_string.replace(",", "."); //replace ',' with '.'
var v = (+v_string) / 2; //convert the value to a decimal and divide by 2

EDIT

Вы также можете попробовать использовать метод getFieldValues (т.е. form.getForm().getFieldValues()) вместо метода getValues. Это должно действовать так, как если бы вы вызывали getValues в каждом поле формы.

2 голосов
/ 20 марта 2011

Это должно работать.

var value = parseFloat("5000,5".replace(",", "."));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...