我們在專案中經常遇到需要格式化的金額數和銀行卡號,一般我們常見的有兩種表現形式:輸入框內格式化和輸入框外格式化。這裡我主要把我在專案中遇到的輸入框內部格式化的,**亮出來,框外的格式化相對簡單一點。
頁面**:
銀行卡號格式化
//卡號每4位一組格式化這裡用「keyup」事件處理格式化,每4位數一組中間空格隔開。但是資料格式化以後又不利於計算,所以給當前元素新增乙個屬性「data-oral」,儲存未處理的數字,這樣計算或者要傳遞到後台可以獲取「data-oral」的值。$("#bankcard").on("keyup", formatbc);
function formatbc(e)
if(temp != this.value)
}
金額格式化
金額格式化和銀行卡號格式化類似,但又有點不同,因為金額每3位數一組用逗號隔開,一般最後有小數點且保留兩位有效數字。這裡我開始用到「keyup」和"change"事件,但是ie
瀏覽器對於change
事件存在相容問題,可以改用focus
和blur
事件代替。
類似給元素新增屬性「data-oral」儲存未格式化的數字。
/*其實我覺得,輸入框外的格式化更合理一些,大多數都是輸入框外部格式化的,我寫了個例子也拉出來吧。* 金額每3位數一組逗號隔開格式化
* 1.先把非數字的都替換掉
* 2.由於ie瀏覽器對於change事件存在相容問題,改用focus和blur事件代替。
* */
$("#moneynum").on("keyup", formatmn);
$("#moneynum").on(,
blur: function()
var s = this.value;
var temp;
if(/.+(\..*\.|\-).*/.test(s))
s = parsefloat((s + "").replace(/[^\d\.\-]/g, "")).tofixed(2) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1];
t = "";
for(i = 0; i < l.length; i ++ )
temp = t.split("").reverse().join("") + "." + r;
this.value = temp;
return this.value;}}
});function formatmn(e)
輸入框外部格式化卡號
原理很簡單,就是隱藏乙個顯示格式化的模組,當輸入框獲取焦點時顯示,失去焦點時隱藏即可。
頁面**:
格式化**:
/* 銀行卡號實時驗證放大顯示 */$(".inputcard").keyup(function(e)
if(val == self)else
});$(".inputcard").unbind('focusin');
$(".inputcard").bind('focusin',function(e)
});$(".inputcard").unbind('focusout');
$(".inputcard").bind('focusout',function(e));
js控制手機號 銀行卡輸入格式化
function formatinput inputelem else setcursorposition ctx,curpos,index delta 50 function paddingspace str d g,1 replace d d g,1 如上方法是控制輸入值的格式,當然你可以改變r...
解決微信小程式銀行卡號輸入轉換格式
ps 2017 02 17 19 44 發現新bug,暫已解決優化中 新手第一次寫部落格,請多多見諒!感覺會有更好的辦法,希望有大牛能對我指點指點 輸入框 輸入後的值 樣式太醜了,決定換乙個樣式 給輸入框乙個監聽事件 輸入的值長度 1 5 等於 0 就加上空格,但是後來發現,使用者回刪資料的時候依舊...
手機號,銀行卡號等自動分組顯示的輸入框
位址如下 前言 在android開發中,我們經常會遇到手機號,銀行卡號,稅號等長串數字或字母,為了視覺上的簡潔化,需要4個一組分組顯示,今天就講講這個功能的實現和使用。今天涉及的內容有 原理分析 小寫轉大寫的類uppercasetransform 封裝類credittext的介紹和使用 專案結構圖和...