View Full Version : سوال: اضافه شدن کاما در textbox
elham1611
شنبه 31 مرداد 1388, 23:09 عصر
با سلام
دنبال یک کد جاوا اسکریپت میکشتم که وقتی در textbox عددی رو تایپ میکنیم خود به خود کاما قرار بده بین اعداد.
مثلا وقتی مینویسیم 10000 خود به خود بنویسه 10,000 ممنون ممنون میشم اگر کسی کدشو بلد باشه.
با سپاس / الهام:لبخندساده:
eAmin
شنبه 31 مرداد 1388, 23:35 عصر
سلام.
می تونید از این استفاده کنید:
<script>
function addCommas(nStr)
{
nStr += '';
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');
}
return x1 + x2;
}
</script>
<input type="text" onchange="this.value = addCommas(this.value)" />
elham1611
یک شنبه 01 شهریور 1388, 15:58 عصر
سلام.
می تونید از این استفاده کنید:
<script>
function addCommas(nStr)
{
nStr += '';
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');
}
return x1 + x2;
}
</script>
<input type="text" onchange="this.value = addCommas(this.value)" />
ازتون ممنون تقریبا به هدفم نزدیک شدم
اما درخواست من اینه که هنگام تایپ کردن عدد خود به خود بین هر سه عدد کاما قرار بده .
این کد وقتی عمل میکنه که از روی تک باکس بخواهیم خارج شویم.
وقتی هم که به جای onchange از Onkeypress استفاده میکنم بین هز یک عدد یک کاما قرار میده.
ممنون میشم راهنمایم کنید./الهام
eAmin
دوشنبه 02 شهریور 1388, 10:01 صبح
کد قبلی مشکلاتی داشت که خودتون هم بهش پی بردید، ولی خب... کد زیر راه حل مشکل شماست:
<script>
function intFormat(number) {
var regex = /(\d)((\d{3},?)+)$/;
number = number.split(',').join('');
while(regex.test(number)){
number = number.replace(regex, '$1,$2');
}
return number;
}
function numFormat(number) {
var pointReg = /([\d,\.]*)\.(\d*)$/, f;
if(pointReg.test(number)){
f = RegExp.$2;
return intFormat(RegExp.$1) + '.' + f;
}
return intFormat(number);
}
</script>
<input type="text" id="txt" onchange="this.value = numFormat(this.value)" onkeyup="this.blur();this.focus()" />
elham1611
سه شنبه 03 شهریور 1388, 10:50 صبح
ممنون خیلی :لبخندساده:
شما در زمینه برنامه نویسی واقعا توانا هستید.
ali_yousefian19
پنج شنبه 19 شهریور 1388, 00:29 صبح
بسیار عالی، ممنون دوست عزیز
ولی یک مشکل :معمولا وقتی به تکست باکس این خاصیت را اضافه میکنیم وقتی خاسیت تکست لز تکست باکس را میگیریم عدد با کاماها را نشون میده در صورتی که ما معمولا فقط خود عدد را میخواهیم و اوون کاماها را برای راحتی کاربر میزاریم؟
حالا به نظر شما به عدد داخل تکست باکس (بدون کاما) چطوری باید دسترسی داشته باشیم؟؟
پیشاپیش ممنون
eAmin
پنج شنبه 19 شهریور 1388, 12:49 عصر
بسیار عالی، ممنون دوست عزیز
ولی یک مشکل :معمولا وقتی به تکست باکس این خاصیت را اضافه میکنیم وقتی خاسیت تکست لز تکست باکس را میگیریم عدد با کاماها را نشون میده در صورتی که ما معمولا فقط خود عدد را میخواهیم و اوون کاماها را برای راحتی کاربر میزاریم؟
حالا به نظر شما به عدد داخل تکست باکس (بدون کاما) چطوری باید دسترسی داشته باشیم؟؟
پیشاپیش ممنون
زمان دریافت مقادیر textbox در سرور کاما رو split کنید. یا با خود جاوااسکریپت اینکار رو بکنید.
ali_yousefian19
پنج شنبه 19 شهریور 1388, 14:58 عصر
ممنون
از split نتونستم استفاده کنم ولی با تابع Replace تونستم همون کار را بکنم
سبک تابع به این صورته
String.Replace (String, String)
منم اینجوری استفاده کردم
string s=TextBox1.Text;
s = s.Replace(",", "");
بازم ممنون
ali_yousefian19
پنج شنبه 19 شهریور 1388, 20:43 عصر
دوستان آیا راهی وجود داره که برای کاما دار کردن تکست باکس لازم نباشه کد جاوا اسکریپت را در هر صفحه بنویسیم و با اضافه کردن یک خصوصیت به تکست باکس و لینک کردن این کد جاوا اسکریپت به صفحه بتونیم تکست باکسمون را کاما دار کنیم
دیدم که این کارا میکنن ولی نمیدونم چجوری
پیشاپیش ممنون
ali_yousefian19
شنبه 21 شهریور 1388, 00:41 صبح
nدوستان سوالما بد مطرح کردم یا کسی حال جواب دادن نداره؟(البته بخاطر روزه :متفکر:)
ببینین اگه متوجه منظورم نمیشین بگین تا نمونه بزارم و توضیح بیشتری بدم
Exception
شنبه 21 شهریور 1388, 12:38 عصر
دوستان آیا راهی وجود داره که برای کاما دار کردن تکست باکس لازم نباشه کد جاوا اسکریپت را در هر صفحه بنویسیم و با اضافه کردن یک خصوصیت به تکست باکس و لینک کردن این کد جاوا اسکریپت به صفحه بتونیم تکست باکسمون را کاما دار کنیم
دیدم که این کارا میکنن ولی نمیدونم چجوری
پیشاپیش ممنون
میخواستم براتون راه حل این سوال رو بنویسم، ولی یه دفعه فکر کردم که میشه این رو کمی عمومی تر در نظر گرفت.
یک اسکریپت ساده برای این کار نوشتم که توضیحات لازم برای استفاده ازش رو هم داده ام. (اینجا: http://hasheminezhad.com/addeventtoclass)
برای این مثال، بعد از اضافه کردن اسکریپت مورد نظر، اینجوری میتونید اون رو فراخوانی کنید:
addEventToClass("keyup", function(e){var self = e.target || e.srcElement; self.value = numFormat(self.value);}, "comma");بعد از این فراخوانی، هر المنتی در صفحه که کلاس comma داشته باشه، به طور خودکار کاما گذاری میشه.
ali_yousefian19
شنبه 21 شهریور 1388, 14:11 عصر
کارت عالی بود دوست من :تشویق: ولی راستش من دنبال همچین چیزی میگردم، این صفحه را ببین
http://hasheminezhad.com/kblayout#comment-33
من با فایلهای جائا اسکریپتی که گذاشتی با اضافه کردن خصوصیت lang="fa" به تکست باکسهام میتونم داخل آنها فارسی بنویسم-- حالا میخوام مثلا با اضافه کردن خاصیت lang="amount" تکست باکسهام کاما دار بشن.
باز هم ممنونم از جوابتون و بدون که با اینکه شاید من جوابما نگرفتم ولی از ارزش کار شما به هیچ وجه کم نمیشه،ممنون میشم اگه دوستان بتونن در این زمینه راهنمائیم کنن
با تشکر
Exception
شنبه 21 شهریور 1388, 16:45 عصر
کارت عالی بود دوست من :تشویق: ولی راستش من دنبال همچین چیزی میگردم، این صفحه را ببین
http://hasheminezhad.com/kblayoutC#omment-33 (http://hasheminezhad.com/kblayoutC#%E2%80%8E%E2%80%8Eomment-33)
من با فایلهای جائا اسکریپتی که گذاشتی با اضافه کردن خصوصیت lang="fa" به تکست باکسهام میتونم داخل آنها فارسی بنویسم-- حالا میخوام مثلا با اضافه کردن خاصیت lang="amount" تکست باکسهام کاما دار بشن.
باز هم ممنونم از جوابتون و بدون که با اینکه شاید من جوابما نگرفتم ولی از ارزش کار شما به هیچ وجه کم نمیشه،ممنون میشم اگه دوستان بتونن در این زمینه راهنمائیم کنن
با تشکر
پیشنهاد من اینه که این کار رو با همون class انجام بدین، ولی اگر دوست دارین اینجوری کار کنید که گفتین هم خیلی فرق نداره. اسکریپت اصلی رو اینجوری بنویسید:
// addEventToAttribute
// Copyright (C) 2009 M. Mahdi Hasheminezhad (hasheminezhad at gmail dot com)
// Bind events to attribute values
// This source is licensed under Common Public License Version 1.0 (CPL)
// History:
// 2009-09-12 First Public Release M. Mahdi Hasheminezhad (http://hasheminezhad.com)
function addEventToAttribute(eventType, eventHandle, attrName, attrValue){
function runEvent(e){
if((e.target || e.srcElement).getAttribute(attrName)==attrValue){
if(typeof(eventHandle) == 'function') eventHandle(e);
else eval(eventHandle);
}
}
if (document.addEventListener) document.addEventListener(eventType, runEvent, false);
else if (document.attachEvent) document.attachEvent("on" + eventType, runEvent);
else document["on" + eventType] = runEvent;
}
فکر کنم تغییراتش مشخص باشه ولی بازم اگر توضیح خواستید، بگین.
در این حالت به جای اسم کلاس، اسم attribute (در اینجا lang) و مقدارش (در اینجا amount) رو پاس کنید. مثلا با این اسکریپت، فراخوانی مورد نظر شما اینجوی میشه:
addEventToAttribute(
"keyup",
function(e){
var self = e.target || e.srcElement;
self.value = numFormat(self.value);
},
"lang",
"amount");
ali_yousefian19
شنبه 21 شهریور 1388, 23:15 عصر
ممنون exception جان که مشکلما حل کردی،
مرسی از پیگیریت و حوصلت
maryamsahar
سه شنبه 10 آذر 1388, 08:10 صبح
سلام . من میخوام یک Textbox تعریف کنم البته در Asp بعد یک customvalidator بذارم کنارش . این کدهای جاوا اسکریپتم برای اون میخوام که وقتی من یک عددی رو تو تکس باکس تایپ کردم به محض فشردن دکمه enter کاستوم ولیدیتور من فعال بشه و کدهای جاوا اسکریپتمو انجام بده. یه سری از کدهای شما تو html کار میکنه .
من خیلی به این برنامه نیاز دارم . و زیادم تو asp وارد نیستم.
دوستان عزیز اگه یکی میتونه تو این زمینه به من کمک کنه ممنون میشم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.