2016-01-15 2 views
0

Я пытаюсь реализовать код через jQuery, который автоматически вводит запятые в большие числа, когда пользователь вводит их в текстовое поле. Например: 1,000, 1,000,000, 10000. Я получил этот запуск, однако, когда пользователь пытается ввести число, которое имеет десятичную точку для ex. 1000.50 запятые исчезают.Запятые исчезают, когда пользователь вводит десятичную точку в поле ввода

Вот код для автоматического ввода запятые:

$("input[data-type='number']").keyup(function(event){ 


    // skip for arrow keys 
    if(event.which >= 37 && event.which <= 40){ 
     event.preventDefault(); 
    } 
    var $this = $(this); 
    var num = $this.val().replace(/,/gi, ""); 
    var num2 = num.split(/(?=(?:\d{3})+$)/).join(","); 
    console.log(num2); 
    // the following line has been simplified. Revision history contains original. 
    $this.val(num2); 
}); 

Как я могу сохранить программу от удаления значений запятой, когда пользователь вводит десятичную точку?

+0

Ну выглядит как ваш Изотерм ехр для не допускает десятичных точек. – epascarello

+0

У JS есть [tools] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString) для этого ... – Teemu

ответ

2

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

var num = $this.val().replace(/,/gi, "").split("."), 
    num2 = ""; 
if (num.length) { 
    num[0] = num[0].split(/(?=(?:\d{3})+$)/).join(","); 
    num2 = num.join("."); 
} 
Смежные вопросы