2015-08-05 4 views
2

Пользователь может ввести до 25 значений в textbox.Как преобразовать длинное числовое значение строки в числовое значение с помощью Javascript/jQuery

i.e. 123456789

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

Я попытался следующий код:

  1. Number($('#textbox1').val()).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  2. parseInt($('#textbox1').val(), 10).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")

И дает мне следующий вывод

1.2,345,679,801,234,568e+21 

ожидается выход: -

1,234,567,890,123,456,789,012,345.00 
+4

Number.MAX_SAFE_INTEGER - это наибольшее точное целочисленное значение, и ваше значение больше этого. –

ответ

0

Попробуйте использовать autoNumeric js. Найти его here

+0

Спасибо за ваши добрые усилия. –

0

что-то вроде этой работы для вас? Я нашел его в интернете ...

function addCommas(nStr) { 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
    x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2 + '.00'; 
} 
+0

не уверен в числовой части, но это даст вам запятую. код от: http://www.mredkj.com/javascript/numberFormat.html – WhiteHat

+0

Спасибо, ты дал мне хороший намек. –

+0

Спасибо за ваши добрые усилия. –

0

для числовой точки зрения, до сих пор я не мог получить какое-либо решение на JavaScript, поэтому я отправил значение стороне сервера и получить JSon результат.

Но для целей отображения я сделал, наконец:

function ChangeAmountFormat(target) { 
var $this = $(target); 
var num = $this.val().replace(/,/g, '').replace(/(\s)/g, ''); 
var decimalPointDeleted = ''; 

if (lastValue.length > 0 && lastValue.indexOf('.') > 0 && num.indexOf('.') < 0) { 
    decimalPointDeleted = 'y'; 
} 

if (num.indexOf('.') >= 0) { 
    var numSplitValues = num.split('.'); 
    num = numSplitValues[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
    num += (num.length > 0 ? ('.' + numSplitValues[1]) : ''); 
} 
else { 
    if (decimalPointDeleted == 'y' && num.toString().substring((num.length - 2), num.length) == '00') { 
     var tempNum = num.toString().substring(0, (num.length - 2)); 
     num = tempNum + '.' + num.toString().substring((num.length - 2), num.length); 
    } 
    else { 
     num = num + (num.length > 0 ? '.00' : ''); 
    } 

    num = num.replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
} 

$this.val(num); 
} 

здесь, еще несколько вещей, также обрабатывает. Пожалуйста, игнорируйте.

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