2016-11-04 65 views
-1

最終,我想要一個只允許輸入整數的掩碼,或者輸入了十進制/句點:允許小數點後的0位數字。將正則表達式轉換爲Javascript輸入掩碼

有效輸入

1 
1. 
1.1 
1.11 
111111111 
111111111. 
111111111.1 
111111111.11 

無效的輸入

a 
a. 
1.a 
1.111 
1.1111 
  • 字符串允許任何數目的數字字符,但只允許1位小數/週期
    • 如果一個週期/十進制存在:小數點後只允許2位數字字符

這個正則表達式做到了這一點:

^\d*\.?([\d]){0,2}$ 

現在我需要將此作爲掩模來輸入。我正在使用Robin Herbots' Inputmask。我真的很努力做這項工作。

我知道有別名currency,但這並不完全按照要求工作。我想要的是,除非有輸入,否則輸入默認爲在焦點/焦點上空白。 currency默認爲0.00。我也希望允許用戶從字段中刪除所有內容,因此它將是空白的。 currency不允許您保留輸入空白。相反,它只會允許你離開字段0.00

$('.moneyfield').inputmask("999", {rightAlign: true, numericInput: true}); 

具體的面具應該在「999」點。我無法弄清楚如何使用內置蒙版,所以我試圖將正則表達式插入蒙版。到目前爲止,我對兩種策略都沒有成功。

另一個嘗試是使用currency別名,然後重寫它以達到我想要的效果。我也沒有成功。這裏是currency面具的定義:

currency: { 
     prefix: "$ ", 
     groupSeparator: ",", 
     alias: "numeric", 
     placeholder: "0", 
     autoGroup: !0, 
     digits: 2, 
     digitsOptional: !1, 
     clearMaskOnLostFocus: !1 
    } 
+0

a投票無解釋? – Neil

+0

您可以在HTML5中輕鬆使用輸入的'pattern'屬性。它允許你用正則表達式來掩蓋輸入元素,就像你想要的一樣。查看[documentation](http://www.w3schools.com/TAGS/att_input_pattern.asp) –

+0

@VivekPradhan偉大的建議,不幸的是我需要它與Safari一起工作,並且Safari不支持此功能。 – Neil

回答

1

我想通了。您只需要覆蓋currency別名中的幾個字段:

$('.money_field').inputmask({alias: 'currency', rightAlign: true, placeholder: "", prefix: '', autoGroup: false, digitsOptional: true}); 
相關問題