2016-04-19 32 views
0

我有一個輸入字段。用戶輸入一個數字。我需要這個數要與圓點代表數千(不是小數) 用戶輸入正確的格式:5600 - >變爲5.600(五千六百) 用戶輸入:56000 - >變爲56.000 等使用點號符號與角度數字過濾器

我需要要在輸入字段內正確格式化的數字。

我有一個小提琴:http://jsfiddle.net/El4a/KPeBD/1059/

這撥弄工作完全,但它使用從角數濾波器因此格式化用逗號表示法的數字。然而,我需要一個點符號。

所以我嘗試用點來手動替換逗號。

var listener = function() { 

      var value = $element.val().replace(/,/g, '') //delete all notations 

      var x = $element.val($filter('number')(value, 0)) //filter 
      $element.val(x).replace(/,/g, '.') //replace comma by dot 
     } 

這沒有奏效。

然後我嘗試使用本地cdn(可以在鏈接的小提琴中看到)。 這似乎是在第一次創建解決方案:

dot-notation

但是,當添加下一個0它翻轉和作用:

nope

我想我也不得不更改以下線

var value = $element.val().replace(/,/g, '') 

var value = $element.val().replace(/./g, '') 

但輸入字段完全不可用。

希望有人對我有一個解決方案!

+0

剛刪除var value = $ element.val()。替換(/,/ g,''),它似乎顯示你想要的:http://jsfiddle.net/Ldt3g201/ –

+0

它必須格式化在輸入欄內。當我檢查你的小提琴時,它沒有給我提供任何格式,只在外面。 – Ayamei

回答

0

我已經刪除了該指令,因爲它對篩選數字沒有多大幫助。

我們可以使用angular filter ($filter)爲相同。將代碼更改爲

myApp.filter('number', ['$filter', function ($filter) { 
return function (input, symbol, fraction) { 
    if (input) { 
    var decimal = input.toString().split('.')[1], 
     value = input.toString().split('.')[0], 
     filtered = value.replace(/(?=(\d\d\d)$)/g, "."); 
    return (decimal) ? (fraction > 0 ? filtered + '.' + decimal.slice(0, fraction) : filtered) : filtered; 
    } else { 
    return 0 
    } 
} 
}]) 

對不起我刪除了整個指令部分並更新了jsFiddle。

這裏是更新Demo

+0

沒有抱歉,我認爲你誤解了。我將編輯我的問題。在你的小提琴中,輸入字段顯示例如650000000 ....沒有使用過。 – Ayamei

0

OMG我終於找到了......

我忘了逃走該死。焦炭:

因此更改

var value = $element.val().replace(/./g, '') 

var value = $element.val().replace(/\./g, '') 

使工作

48小時用得其所?