.js พิมพ์ 5K -> แปลงค่าเป็น 5,000.00 พิมพ์ 1.5M แปลงค่าเป็น 1,500,000.00 แปลงค่าเงินตัวย่อ

พูดคุยแลกเปลี่ยน ปัญหา การเขียน JavaScript เครื่องมือ AJAX Web 2.0 AJAX Framework jQuery และ Node.JS รวมถึง Framework Express ของ Node.JS ทำงานฝั่ง Server

Moderator: mindphp

ภาพประจำตัวสมาชิก
jataz2
PHP Super Member
PHP Super Member
โพสต์: 275
ลงทะเบียนเมื่อ: 22/02/2011 11:48 am

.js พิมพ์ 5K -> แปลงค่าเป็น 5,000.00 พิมพ์ 1.5M แปลงค่าเป็น 1,500,000.00 แปลงค่าเงินตัวย่อ

โพสต์ที่ยังไม่ได้อ่าน โดย jataz2 »

1000 -> 1,000.00
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;
        }
        

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 64