Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.
Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin. Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Sonlarni formatlash: js'da kiritilgan sonni formatlash

+5 ovoz
65 marta ko‘rilgan
so‘radi 04 fevral, 17 Alisher Makhmudov (16 bal)

Currency input bor, shuning qiymatiga forydalanuvchi 100000 deb yozsa, input mask orqali 100 000 bo`lib formatirovka bo`lishi kerak, endi agar 100000,00 deb yozilsa input mask orqali 100 000,00 deb uzgarishi kerak, shuni qanday qilib qilsa buladi?

100000 => 100 000

100000,00 => 100 000,00

Misol uchun, http://jsfiddle.net/ZeNyn/ shunga uhshash, faqat formatirovkasi, yani probellarni qushish kerak...

<input id="masked" type="text" value="0.00" />

$(document).ready(function() {
    $('#masked').bind('keyup', function(e) {
        if (e.srcElement.value.match(/^[0-9]{1,14}\.[0-9]{2}$/) === null) {
            $(this).addClass('invalid');
        } else {
            $(this).removeClass('invalid');
        }
    });
});

.invalid { background-color: #ff8888; }

bu kod hozir sonnig formati 100000 yoki 100000,00 formatida kiritilganini tekshirmoqda. shuni endi formatlash ham kerak. 

1 ta javob

+2 ovoz
javob berdi 04 fevral, 17 Saidolim (3,566 bal)
tanlangan 05 fevral, 17 Alisher Makhmudov
 
Eng yaxshi javob

Bitta formatlash uchun funksiya yasab olamiz va har gal foydalanuvchi son kiritganida formatini tekshirib, mask bo`yicha o`zgartiramiz:

function addCommas(inputText) {
    // pattern works from right to left
    var commaPattern = /(\d+)(\d{3})(\,\d*)*$/;
    var callback = function (match, p1, p2, p3) {
        return p1.replace(commaPattern, callback) + ' ' + p2 + (p3 || '');
    };
    return inputText.replace(commaPattern, callback);
}

$(document).ready(function() {
    $('#masked').bind('keyup', function(e) {
        if (e.srcElement.value.match(/^[0-9 ]{1,14}(\,[0-9]{2})?$/) === null) {
            $(this).addClass('invalid');
        } else {
            $(this).removeClass('invalid');
        }
        
        $(this).val(addCommas($(this).val().replace(/\s/g,'')));
        
    });
    
});

Ishlatib ko`rish uchun: http://jsfiddle.net/ZeNyn/114/

bu yerda asosiy narsa, 

var commaPattern = /(\d+)(\d{3})(\,\d*)*$/;

regex har ikkala holatni tekshira olishi kerak, ham butun sonni, ham o`nlik kasrni. Shu sababli 3 ta guruhga ajratib oldik:

  • 3 ta raqam ketma-ket kelgan guruh
  • undan avval keldan ixtiyoriy son
  • agar bor bo`lsa, verguldan keyin kelgan sonlar

Keyin mos ravishda formatladik.

Har safar bo`shliq (probel) qo`shilib qolmaligi uchun, 

.replace(/\s/g,'')

yordamida kiritilgan sondagi barcha bo`shliqlarni olib tashladik.

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...