2010-04-13 109 views
24

如何在用戶輸入數字時動態添加逗號?有沒有一個好的數字格式化程序可以幫助?我必須稍後添加這些數字,所以我最終必須刪除逗號。但屏幕需要顯示逗號以提高可讀性。用戶輸入數字時,jQuery可以添加逗號嗎?

+1

那麼等待你想在每個數字後加上一個逗號?所以我輸入123456會變成1,2,3,4,5,6?或者你只是用逗號替換空格? – 2010-04-13 19:02:56

+1

作爲macek的答案,他很可能想要添加數千個分隔符。 – 2010-04-13 19:26:11

回答

63

運行的代碼片段,看看它的工作

$('input.number').keyup(function(event) { 
 

 
    // skip for arrow keys 
 
    if(event.which >= 37 && event.which <= 40) return; 
 

 
    // format number 
 
    $(this).val(function(index, value) { 
 
    return value 
 
    .replace(/\D/g, "") 
 
    .replace(/\B(?=(\d{3})+(?!\d))/g, ",") 
 
    ; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<input class="number">

+0

你可以直接跳過不必在keyup函數中再次調用jQuery,只需在整個過程中使用它。然後將var num = $ this.val()。replace()更改爲this.value.replace(),並將$ this.val(num.replace())更改爲this.value = num.replace()。 – Bob 2010-04-13 20:45:35

+0

@Bob,我很欣賞你的輸入,但是使用jQuery的方法代價是調用'$()'在jQuery社區中被廣泛接受。這是*爲什麼* jQuery首先提供了可用的方法。 – 2010-04-13 20:48:12

+3

我只是在嘗試這段代碼,而在Chrome和FF中,它將逗號錯位1位。例如,「1234」 - >「1234」和「12345」 - >「1,2345」 – StoicLoofah 2013-02-25 17:43:37

0

這裏的香草JS @maček的答案的實現,如果你不想使用jQuery:

var el = document.querySelector('input.number'); 
 
el.addEventListener('keyup', function (event) { 
 
    if (event.which >= 37 && event.which <= 40) return; 
 

 
    this.value = this.value.replace(/\D/g, '') 
 
         .replace(/\B(?=(\d{3})+(?!\d))/g, ','); 
 
});
<input class="number">

+0

i只能在這裏輸入4位數字,任何具體原因,因爲我會有更多的4位數字,謝謝 – 2017-07-19 06:50:37

相關問題