PDA

View Full Version : فارسی کردن اعداد label



leontry89
یک شنبه 10 فروردین 1393, 18:32 عصر
دوستان من از dll پرشیا استفاده کردم برای فارسی کردن اعداد یک label
http://www.persiadevelopers.com/articles/Persia.NET.aspx

و با این کد تونستم اعداد label رو فارسی کنم
String persianNumber = Persia.PersianWord.ToPersianString(12345);



اما چون label یک شمارنده ست و اعدادش تغییر میکنه نمی دونم چه کدی بنویسم

mRizvandi
یک شنبه 10 فروردین 1393, 23:45 عصر
خب هر جایی که مقدارش تغییر می کنه همون کد رو استفاده کن. یا مثلا در Page_Load...

leontry89
دوشنبه 11 فروردین 1393, 01:17 صبح
این کد رو در Page load گذاشتم
مشکل اینجاست شمارنده label از طریق کد جاوا اسکریپت تغییر میکنه

ali.n93
دوشنبه 11 فروردین 1393, 01:19 صبح
اگر از فونت فارسی استفاده کنید هم مشکل حل میشه

leontry89
دوشنبه 11 فروردین 1393, 02:07 صبح
نه الزاما باید tahoma باشه

ali.n93
دوشنبه 11 فروردین 1393, 12:56 عصر
این تابع جاوااسکریپت رو نوشتم کافیه به جای textbox1 آی دی label رو بنویسی. البته ClientIdMode مربوط به label رو static بزار

function f1() {
var v = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
var a = document.getElementById("textbox1").value;
for (var i = 0; i < 10; i++)
while (a.indexOf(i.toString()) != -1)
a = a.replace(i.toString(), v[i]);
document.getElementById("textbox1").value = a;
}

leontry89
دوشنبه 11 فروردین 1393, 20:01 عصر
سپاس فراوان اما کار نکرد
بجای "textbox1" نوشتم Counter

ali.n93
دوشنبه 11 فروردین 1393, 20:16 عصر
سپاس فراوان اما کار نکرد
بجای "textbox1" نوشتم Counter
اگه میتونید کد جاوااسکریپت خودتون و کد html مربوط به label رو بزارین.
* دقت کنید که در ویژگی های Label باید ClientIDMode=static باشه.
* توی کدی که براتون نوشتم دو بار textbox1 استفاده کردم. هر دو رو باید ID مربوط به Label رو بزارید.
* دقت کنید که حروف بزرگ یا کوچک رو درست وارد کنید. مثلا اگه آی دی Counter هستش توی کد جاوا counter ننوشته باشید.

ali.n93
دوشنبه 11 فروردین 1393, 20:29 عصر
سپاس فراوان اما کار نکرد
بجای "textbox1" نوشتم Counter
یه نکته ی دیگه
فکر کنم شما "textbox1" رو کامل پاک کردید. Counter باید داخل "" باشه: "Counter"

leontry89
سه شنبه 12 فروردین 1393, 00:30 صبح
انجام دادم علی جان اما نشد
شاید بخاطر Ajax ی بودن سایته

ali.n93
سه شنبه 12 فروردین 1393, 01:42 صبح
انجام دادم علی جان اما نشد
شاید بخاطر Ajax ی بودن سایته
آخه این چیز خاصی نیست اگه میتونی کدهایی که گفتم رو بزار بهتر میتونم کمک کنم

ali.n93
سه شنبه 12 فروردین 1393, 01:47 صبح
اهان الان متوجه شدم مشکل از کجاست :اشتباه::اشتباه::اشتباه:
label وقتی که توی مرورگر ها اجرا میشه به تگ span تبدیل میشه. بنابراین اون دو جایی که از value استفاده کردم باید از innerHTML استفاده کنی :متفکر:
امیدوارم مشکل حل بشه

function f1() { var v = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
var a = document.getElementById("lbl1").innerHTML;

for (var i = 0; i < 10; i++)
while (a.indexOf(i.toString()) != -1)
a = a.replace(i.toString(), v[i]);
document.getElementById("lbl1").innerHTML = a;

}

leontry89
پنج شنبه 14 فروردین 1393, 01:06 صبح
متاسفانه جواب نداد واقعا کلافه شدم
کد شما رو به روش های مختلف تست زدم بازم نشد

mRizvandi
پنج شنبه 14 فروردین 1393, 01:57 صبح
ببخشید این کدی که دوستمون لطف کردن دادند رو کجا گذاشتید؟ و چطوری استفاده کردید؟ (شاید در زمان مناسبی کال نمیشه)

ali.n93
پنج شنبه 14 فروردین 1393, 11:37 صبح
متاسفانه جواب نداد واقعا کلافه شدم
کد شما رو به روش های مختلف تست زدم بازم نشد
مطمئنا کد رو در جای اشتباهی استفاده میکنید. بازم میگم اگه کد جاوا و جی کوئری رو بزارید و همین طور کد Label رو بهتر میشه کمکتون کرد

leontry89
پنج شنبه 14 فروردین 1393, 12:27 عصر
<script type="text/javascript">

function validatelimit(obj, maxchar) {


if (this.id) obj = this;
var remaningChar = maxchar - obj.value.length;
document.getElementById('<%= Counter.ClientID %>').innerHTML = remaningChar;
<%= Counter.ClientID %>.style.color = 'Gray';
<%= txtCounter.ClientID %>.style.color = 'Gray';
<%= lblMsg.ClientID %>.innerHTML = '';
if (remaningChar <= 49) {
<%= Counter.ClientID %>.style.color = 'red';
<%= txtCounter.ClientID %>.style.color = 'red';
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
<%= Counter.ClientID %>.style.color = 'red';
<%= txtCounter.ClientID %>.style.color = 'red';
<%= lblMsg.ClientID %>.innerHTML = 'وارد کردن بیش از ۲۵۰ کاراکتر در متن تماس امکان پذیر نیست.';
//alert('شما از 250 کاراکتر مجاز استفاده کرده اید');
return false;
}
else
{ return true;

}
}

function f1() { var v = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
var a = document.getElementById("Counter").innerHTML;

for (var i = 0; i < 10; i++)
while (a.indexOf(i.toString()) != -1)
a = a.replace(i.toString(), v[i]);
document.getElementById("Counter").innerHTML = a;

}

</script>

دوستان وظیفه تابع اول شمارش تعداد کاراکترهای وارد شده در TextBox که به درستی کار میکنه
که عدد شمارش توسط Label زیر نمایش میده:
<asp:Label ID="Counter" runat="server" ForeColor="Silver" ClientIDMode="Static" Text="250"></asp:Label>

اونم از کدی که علی آقا دادن

ali.n93
پنج شنبه 14 فروردین 1393, 14:06 عصر
در مورد کدهای جاوا که نوشتید چندان مطمئن نیستم که درسته یا نه. چون از document.getElementById استفاده نکردید و ظاهرا آکولاد ها {} رو هم درست استفاده نکردید. اما اگه همه کدتون هم درست باشه اشتباه اصلی اینجاست که هیچوقت تابعی که من نوشتم اجرا نمیشه!
باید بعد از خط زیر
document.getElementById('<%= Counter.ClientID %>').innerHTML = remaningChar;
این خط رو اضافه کنید تا تابع اجرا بشه
f1();

ali.n93
پنج شنبه 14 فروردین 1393, 14:10 عصر
وقتی از جاوااسکریپت استفاده میکنید سعی کنید سایت رو با Internet explorer اجرا کنید که بتونید خطاهای جاوا رو هم چک کنید. بقیه مرورگرها خطاهای جاوااسکریپت رو به شما نشون نمیدن و فقط از اجرای بقیه کد جلوگیری میکنند

leontry89
جمعه 15 فروردین 1393, 14:25 عصر
علی جان منظورت اینه اینطوری بنویسمش:
function f1() { var v = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"]; var a = document.getElementById('<%= Counter.ClientID %>').innerHTML = remaningChar;
f1();
for (var i = 0; i < 10; i++)
while (a.indexOf(i.toString()) != -1)
a = a.replace(i.toString(), v[i]);
document.getElementById('<%= Counter.ClientID %>').innerHTML = a

mRizvandi
جمعه 15 فروردین 1393, 14:36 عصر
دوست عزیز تابعی که دوست خوبمون علی دادن رو در همون تابعی که داره Label رو تغییر میده کال کنید. بعد از تغییرات و قبل از خروج از تابع.
البته بعد از اینکه تابع رو خوب بررسی کردم فکر میکنم بعد از این خط، تابع f1 رو صدا کنید بهتره:


document.getElementById('<%= Counter.ClientID %>').innerHTML = remaningChar;
f1();

leontry89
جمعه 15 فروردین 1393, 14:55 عصر
دوست عزیز الان کدم این شده که در قسمت head قرار داده شده
اما متاسفانه کار نمیکنه واقعا عصبیم کرده

<asp:Label ID="Counter" runat="server" ForeColor="Silver" ClientIDMode="Static" Text="250"></asp:Label>




<script type="text/javascript"> function f1() {
var v = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
var a = document.getElementById('<%= Counter.ClientID %>').innerHTML = remaningChar;
f1();
for (var i = 0; i < 10; i++)
while (a.indexOf(i.toString()) != -1)
a = a.replace(i.toString(), v[i]);
document.getElementById('<%= Counter.ClientID %>').innerHTML = a
}


function validatelimit(obj, maxchar) {
if (this.id) obj = this;
var remaningChar = maxchar - obj.value.length;
document.getElementById('<%= Counter.ClientID %>').innerHTML = remaningChar;
<%= Counter.ClientID %>.style.color = 'Gray';
<%= txtCounter.ClientID %>.style.color = 'Gray';
<%= lblMsg.ClientID %>.innerHTML = '';
if (remaningChar <= 49) {
<%= Counter.ClientID %>.style.color = 'red';
<%= txtCounter.ClientID %>.style.color = 'red';
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
<%= Counter.ClientID %>.style.color = 'red';
<%= txtCounter.ClientID %>.style.color = 'red';
<%= lblMsg.ClientID %>.innerHTML = 'وارد کردن بیش از ۲۵۰ کاراکتر در متن تماس امکان پذیر نیست.';
//alert('شما از 250 کاراکتر مجاز استفاده کرده اید');
return false;
}
else
{ return true;
}
}
</script>

ali.n93
جمعه 15 فروردین 1393, 15:41 عصر
الان اشتباهه. f1() رو نباید اینجایی که الان نوشتید باشه. همون طور که دوستمون mrRizvandi گفتند عمل کنید

ali.n93
جمعه 15 فروردین 1393, 16:06 عصر
کد رو کامل براتون نوشتم. تگ script رو کلا به این شکل تغییر بدید.

<script type="text/javascript">
function f1() {
var v = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"];
var a = document.getElementById("Counter").innerHTML;
for (var i = 0; i < 10; i++)
while (a.indexOf(i.toString()) != -1)
a = a.replace(i.toString(), v[i]);
document.getElementById("Counter").innerHTML = a
}


function validatelimit(obj, maxchar) {
if (this.id) obj = this;
var remaningChar = maxchar - obj.value.length;
var a1=document.getElementById("Counter");
a1.innerHTML = remaningChar;
f1();
a1.style.color = 'Gray';
document.getElementById("<%= txtCounter.ClientID %>").style.color = 'Gray';
document.getElementById("<%= lblMsg.ClientID %>").innerHTML = '';
if (remaningChar <= 49) {
a1.style.color = 'red';
document.getElementById("<%= txtCounter.ClientID %>").style.color = 'red';
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
//Mojtaba Golnouri WebSite
a1.style.color = 'red';
document.getElementById("<%= txtCounter.ClientID %>").style.color = 'red';
document.getElementById("<%= lblMsg.ClientID %>").innerHTML = 'وارد کردن بیش از ۲۵۰ کاراکتر در متن تماس امکان پذیر نیست.';
//alert('شما از 250 کاراکتر مجاز استفاده کرده اید');
return false;
}
else
{
return true;
}
}
</script>

سایت رو حتما با InternetExplorer اجرا کنید که اگر کدها خطا داره متوجه بشید به کدوم خط گیر میده و بشه مشکل رو حل کرد
در ضمن کاربرد این خط رو نمیفهمم! حس میکنه ممکنه ارور داشته باشه:
if (this.id) obj = this;

leontry89
جمعه 15 فروردین 1393, 16:43 عصر
علی جان سپاس فراوان
دستت درد نکنه داداش
درست شد
:تشویق:

ali.n93
جمعه 15 فروردین 1393, 19:55 عصر
خواهش میکنم. خداروشکر که بالاخره درست شد!