# زبان های اسکریپتی > JavaScript و Framework های مبتنی بر آن >  جدا کردن سه رقم سه رقم عدد هنگام تایپ در textbox

## mhaghp

چگونه می توان وقتی در textbox عدد وارد می کنیم هنگام تایپ سه رقم سه رقم جدا شود

----------


## ahmad156

با جاوااسکریپت و بهتر از اون jquery :لبخند:

----------


## mhaghp

> با جاوااسکریپت و بهتر از اون jquery


خوب چگونه می شود این کار را با جاوا اسکریپت انجام داد؟

----------


## ahmad156

شما با استفاده از 

$("#yourtxtID").val().length

طول textbox خود رو دارین.و با استفاده از 

var txt=$("#yourtxtID").val();

مقدار textbox رو دارین.
با استفاده از 

$("#yourtxtID").val(txt+',')

میتونین مقدار جدید که میتونه منظور شما رو پیاده سازی کنه رو جایگزین کنین.
البته من کلیات رو گفتم.جزییات رو باید خودتون پیاده سازی کنین
البته این کارا رو توی onkeypressباید نوشت

----------


## mbasirati

قطعه کد کاملی برای این کار وجود داره؟
توی سایت جیب برای فیلدهای عددی این کارو کردن. و جالب اینه که حتی اگه عدد رو داخل تکست باکس کپی هم بکنی بازم جداکننده رو اضافه میکنه.
من خیلی سرچ کردم و کدای زیادی پیدا کردم اما هرکدوم یه مشکلی داشتن.

----------


## mbasirati

function pageLoad() {
	$('input.digits').keyup(function (event) {
		// skip for arrow keys
		if (event.which >= 37 && event.which <= 40) {
			event.preventDefault();
		}
		var $this = $(this);
		var num = $this.val().replace(/,/g, '');
		// the following line has been simplified. Revision history contains original.
		$this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
	});
}


بالاخره پیدا کردم. البته این کد رو خیلی سایتا گذاشته بودن ولی به جای keyup با keypress نوشته بودن و برای همین اشتباه کار میکرد.
شما فقط کافیه که به تکست باکسی که میخواید این ویژگی رو داشته باشه کلاس digits رو بدید.

----------


## mgh64120

> function pageLoad() {
>     $('input.digits').keyup(function (event) {
>         // skip for arrow keys
>         if (event.which >= 37 && event.which <= 40) {
>             event.preventDefault();
>         }
>         var $this = $(this);
>         var num = $this.val().replace(/,/g, '');
>         // the following line has been simplified. Revision history contains original.
> ...


سلام
این کد روی فایرفاکس جواب نمیده
بهتره ازاین نمونه استفاده کنید
بدرود...

----------


## mbasirati

> سلام
> این کد روی فایرفاکس جواب نمیده
> بهتره ازاین نمونه استفاده کنید
> بدرود...


من روی فایرفاکسم تست کردم، جواب میده.
درضمن نمونه ای که شما گذاشتید موقع تایپ در تکست باکس عمل نمیکنه و فقط وقتی فوکوس از روی تکست باکس میره سه رقم سه رقم جدا میکنه.

----------


## hosein_dig

> function pageLoad() {
>     $('input.digits').keyup(function (event) {
>         // skip for arrow keys
>         if (event.which >= 37 && event.which <= 40) {
>             event.preventDefault();
>         }
>         var $this = $(this);
>         var num = $this.val().replace(/,/g, '');
>         // the following line has been simplified. Revision history contains original.
> ...


آقا دمت گرم خیلی مفید بود ولی اگه بخام تو دیتا بیس ذخیرش کنم با همین ممیزا دخیره میشه شما کاری کردی برای این داستان
ممنون

----------


## mbasirati

> آقا دمت گرم خیلی مفید بود ولی اگه بخام تو دیتا بیس ذخیرش کنم با همین ممیزا دخیره میشه شما کاری کردی برای این داستان
> ممنون


برای ذخیره تو دیتابیس بهتره که این جداکننده ها رو حذف کنی که اونو با یه تابع (توی هر زبون برنامه نویسی ای که کار میکنی مث سی شارپ، پی اچ پی و ...) میتونی انجام بدی. فقط کافیه این جداکننده رو replace کنی با تهی

----------


## رضا قربانی

بهترین روش : جدا سازی هنگام تایپ کردن :




function Comma(Num) {
            Num += '';
            Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');
            Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');
            x = Num.split('.');
            x1 = x[0];
            x2 = x.length > 1 ? '.' + x[1] : '';
            var rgx = /(\d+)(\d{3})/;
            while (rgx.test(x1))
                x1 = x1.replace(rgx, '$1' + ',' + '$2');
            return x1 + x2;
        }






```
onkeyup="javascript:this.value=Comma(this.value);"
```

----------


## behzadamin12

سلام ببیند روش ساده ای هستش
اما بستگی داره به صورتی این کارو انجام میدید 
فارق از زبان برنامه نویسی بک اندی که استفاده می کنید به نظرم باید به صورت ذیل اینکارو انجام بدید


function separateNum(value, input) {
        /* seprate number input 3 number */
        var nStr = value + '';
        nStr = nStr.replace(/\,/g, "");
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        if (input !== undefined) {

            input.value = x1 + x2;
        } else {
            return x1 + x2;
        }
    }حالا مثال کاملترش تو لینک ذیل قابل مشاهده هست

https://jobteam.ir/ProductUser/104-J...perator-Number

----------


## mina damirchi

> بهترین روش : جدا سازی هنگام تایپ کردن :
> 
> 
> 
> 
> function Comma(Num) {
>             Num += '';
>             Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');
>             Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', '');
> ...


:قلب: خیلی عالی بود، ممنون

----------

