105k -> 105,000.00
20K -> 20,000.00
1.05M -> 1,050,000.00
1m -> 1,000,000.00
0 -> 0.00
<input id="txtContractAmount" name="ContractAmount" onblur="toThousandMillon(this.value,this,event);padzero2(this.value,this);" onkeyup="isValidCurrency(this.value,this,event);" type="text">
โค้ด: เลือกทั้งหมด
function toThousandMillon(str, obj, e) {
var ret = str;
if ((str.indexOf('K') != -1) || (str.indexOf('k') != -1) || (str.indexOf('m') != -1) || (str.indexOf('M') != -1)) {
try {
var multipliers = { k: 1000, m: 1000000 };
ret = (parseFloat(str) * multipliers[str.charAt(str.length - 1).toLowerCase()]);
if (myIsNaN(ret)) {
obj.value = "0.00";
alert("ตัวอย่างที่ถูกต้อง 1M 1.5M 1.05M ตัวอย่างที่ไม่ถูกต้อง 1K.5 1K.05");
}
else {
obj.value = ret;
obj.value = thousandsSeparators(obj.value);
}
}
catch (error) {
obj.value = "0.00";
}
}
else {
obj.value = thousandsSeparators(obj.value);
}
}
function thousandsSeparators(str) {
try {
transactionAmount = str;
var numParts = transactionAmount.toString().split(".");
numParts[0] = numParts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return numParts.join(".");
}
catch (error)
{ }
}
function myIsNaN(o) {
return typeof (o) === 'number' && isNaN(o);
}
function padzero2(str, obj) {
var ret = str;
if (ret == "")
{
ret = "0";
}
var numParts = str.split(".");
if (numParts.length <= 1) { //ไม่มีจุดทศนิยม
var precision = "0".pad(2);
ret = ret + "." + precision;
obj.value = ret;
}
}
function isValidCurrency(str, obj, e) {
var theEvent = e || window.event;
if (str != "") {
if (!/^[0-9 k K m M]*\.?(?:\d{1,2})?$/.test(str)) {
alert('ตัวเลข 0-9 k m K M และมีจุดทศนิยมได้ไม่เกิน 2 หลัก');
replaceCurrency(str, obj); //accept only number otherwise delete
}
}
}
function replaceCurrency(str, obj) {
var orgi_text = "kmKM1234567890.";
var first_text = "kmKM1234567890.";
var str_length = str.length;
var str_length_end = str_length - 1;
var isThai = true;
var Char_At = "";
for (i = 0; i < str_length; i++) {
Char_At = str.charAt(i);
if (orgi_text.indexOf(Char_At) == -1) {
isThai = false;
}
}
if (str_length >= 1) {
if (isThai == false) {
for (i = 0; i < str_length; i++) {
Char_At = str.charAt(i);
if (orgi_text.indexOf(Char_At) == -1) {
obj.value = obj.value.replace(Char_At, '');
}
}
}
}
if (str_length > 0) {
var digit = str.charAt(0);
if (first_text.indexOf(digit) == -1) {
obj.value = str.substr(1, str_length_end);
}
}
}
String.prototype.pad = function (size) {
var s = String(this);
while (s.length < (size || 2)) { s = s + "0"; }
return s;
}