با سلام
دنبال یک کد جاوا اسکریپت میکشتم که وقتی در textbox عددی رو تایپ میکنیم خود به خود کاما قرار بده بین اعداد.
مثلا وقتی مینویسیم 10000 خود به خود بنویسه 10,000 ممنون ممنون میشم اگر کسی کدشو بلد باشه.
با سپاس / الهام
با سلام
دنبال یک کد جاوا اسکریپت میکشتم که وقتی در textbox عددی رو تایپ میکنیم خود به خود کاما قرار بده بین اعداد.
مثلا وقتی مینویسیم 10000 خود به خود بنویسه 10,000 ممنون ممنون میشم اگر کسی کدشو بلد باشه.
با سپاس / الهام
آخرین ویرایش به وسیله elham1611 : شنبه 31 مرداد 1388 در 23:22 عصر
سلام.
می تونید از این استفاده کنید:
<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 استفاده میکنم بین هز یک عدد یک کاما قرار میده.
ممنون میشم راهنمایم کنید./الهام
کد قبلی مشکلاتی داشت که خودتون هم بهش پی بردید، ولی خب... کد زیر راه حل مشکل شماست:
<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()" />
ممنون خیلی
شما در زمینه برنامه نویسی واقعا توانا هستید.
بسیار عالی، ممنون دوست عزیز
ولی یک مشکل :معمولا وقتی به تکست باکس این خاصیت را اضافه میکنیم وقتی خاسیت تکست لز تکست باکس را میگیریم عدد با کاماها را نشون میده در صورتی که ما معمولا فقط خود عدد را میخواهیم و اوون کاماها را برای راحتی کاربر میزاریم؟
حالا به نظر شما به عدد داخل تکست باکس (بدون کاما) چطوری باید دسترسی داشته باشیم؟؟
پیشاپیش ممنون
ممنون
از split نتونستم استفاده کنم ولی با تابع Replace تونستم همون کار را بکنم
سبک تابع به این صورته
String.Replace (String, String)
منم اینجوری استفاده کردم
string s=TextBox1.Text;
s = s.Replace(",", "");
بازم ممنون
دوستان آیا راهی وجود داره که برای کاما دار کردن تکست باکس لازم نباشه کد جاوا اسکریپت را در هر صفحه بنویسیم و با اضافه کردن یک خصوصیت به تکست باکس و لینک کردن این کد جاوا اسکریپت به صفحه بتونیم تکست باکسمون را کاما دار کنیم
دیدم که این کارا میکنن ولی نمیدونم چجوری
پیشاپیش ممنون
nدوستان سوالما بد مطرح کردم یا کسی حال جواب دادن نداره؟(البته بخاطر روزه )
ببینین اگه متوجه منظورم نمیشین بگین تا نمونه بزارم و توضیح بیشتری بدم
میخواستم براتون راه حل این سوال رو بنویسم، ولی یه دفعه فکر کردم که میشه این رو کمی عمومی تر در نظر گرفت.
یک اسکریپت ساده برای این کار نوشتم که توضیحات لازم برای استفاده ازش رو هم داده ام. (اینجا: http://hasheminezhad.com/addeventtoclass)
برای این مثال، بعد از اضافه کردن اسکریپت مورد نظر، اینجوری میتونید اون رو فراخوانی کنید:
addEventToClass("keyup", function(e){var self = e.target || e.srcElement; self.value = numFormat(self.value);}, "comma");بعد از این فراخوانی، هر المنتی در صفحه که کلاس comma داشته باشه، به طور خودکار کاما گذاری میشه.
کارت عالی بود دوست من ولی راستش من دنبال همچین چیزی میگردم، این صفحه را ببین
http://hasheminezhad.com/kblayout#comment-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");
ممنون exception جان که مشکلما حل کردی،
مرسی از پیگیریت و حوصلت
آخرین ویرایش به وسیله ali_yousefian19 : یک شنبه 22 شهریور 1388 در 00:38 صبح دلیل: پیش میاد دیگه
سلام . من میخوام یک Textbox تعریف کنم البته در Asp بعد یک customvalidator بذارم کنارش . این کدهای جاوا اسکریپتم برای اون میخوام که وقتی من یک عددی رو تو تکس باکس تایپ کردم به محض فشردن دکمه enter کاستوم ولیدیتور من فعال بشه و کدهای جاوا اسکریپتمو انجام بده. یه سری از کدهای شما تو html کار میکنه .
من خیلی به این برنامه نیاز دارم . و زیادم تو asp وارد نیستم.
دوستان عزیز اگه یکی میتونه تو این زمینه به من کمک کنه ممنون میشم.