2010-07-25 45 views
0

我使用了jQuery插件,屏蔽,但我不能。如何從</p> <p><a href="http://digitalbush.com/projects/masked-input-plugin/" rel="nofollow noreferrer">http://digitalbush.com/projects/masked-input-plugin/</a></p> <p>我想自定義插件,並盡我所能去做自定義屏蔽輸入jQuery插件

我要的是

  1. 我只能輸入數字。
  2. 所有數字將在每第3個數字後自動格式化(,)。 (。)
  3. 只有後兩位數字

我使用這款面膜:

$("#product").mask("999,999,999.99",{placeholder:" "}); 

這樣做的問題是,如果我需要鍵入只有150.50,我需要把我的光標在確切的地點和類型。

例如在上述掩碼中,如果我鍵入150.50,則文本框如下所示: [][][],[][][],150.50其中[]是空格。我想要的是隻顯示 150.50,沒有額外的(,)。
如果我鍵入1150.50然後顯示1,150.50,但我想要格式化自動發生,一旦我完成打字並且不想顯示額外的任何(,)s。

+0

如果用戶輸入「5」,是否要顯示「.05」? – Adam 2010-07-25 10:08:45

+0

@adam如果用戶輸入5,應該是5.00 – air 2010-07-25 10:43:28

+0

然後如果用戶鍵入「5」,「0」和「3」,那麼如何實現「5.03」(根據需要)?這不會產生「500.03」,不正確嗎? – Adam 2010-07-25 11:06:02

回答

2

蓋比的答案是正確的,並提供更多的選擇比我的。但是,我爲您的特定需求提出瞭解決方案。查看它here

$('input').bind('keyup blur', function(){ 
    var i, j, final = '', input = $(this), 
     raw = input.val().replace(/[^\d]/g, ''); 
    while (raw.substr(0, 1) === '0' && raw.length > 2) { //remove leading 0s for large numbers 
     raw = raw.substr(1); 
    } 
    while (raw.length < 2) { //pad with up to two 0s for small numbers 
     raw = '0' + raw; 
    } 
    for (i = 1; i <= raw.length; i++) { //format the number as ##,###,###.## 
     j = raw.length - i; 
     final = 
      (i === 2 ? '.' : ((i + 1) % 3) === 0 && i != raw.length ? ',' : '') 
      + raw.substr(j, 1) 
      + final; 
    } 
    input.val(final); 
}); 
+0

感謝亞當這個不錯的解決方案 – air 2010-07-25 12:40:40

相關問題