ورود

View Full Version : فارسی کردن text box ها در asp.net 2003



mona_z
چهارشنبه 28 فروردین 1387, 08:51 صبح
میخواهم در زمان اجرا بدون گرفتنalt+shift textbox فارسی شوند

twelve
چهارشنبه 28 فروردین 1387, 10:29 صبح
با ااستفاده از توابع جاوا اسکریپت مخصوص اینکار میتونید صفحه کلید رو در فیلد مورد نظر فارسی کنید
فایل مخصوص رو ضمیمه کردم برای استفاده اون رو به صفحه وارد کنید و بعد :


textbox.attributes.add("onkeypress"," FKeyPress()")


اینم برای راست به چپ شدن TextBox :


textbox.style.add("direction"," rtl")

mona_z
شنبه 31 فروردین 1387, 10:41 صبح
ممنونم از کمکتون

H_T_O_A
شنبه 31 فروردین 1387, 13:09 عصر
ممنونم از کمکتون

دوست عزیز برای اینکه تشکر کنی باید از گزینه تشکر که پایین سمت چپ هر پست هست استفاده کنی نه اینکه یه پست بزاری و توش فقط بنویسی ممنون...
موفق باشی

mehdi_RM
یک شنبه 01 اردیبهشت 1387, 11:22 صبح
من این کار ها رو در 2005 انجام دادم ولی فارسی نمیشه

من این کد های javascript رو داخل یه فایل جدا می زاررم و در مسترپیج صفحه اون در قسمت head به این صورت می نویسم ولی کار نمی کنه


<SCRIPT language="JavaScript" type="text/javascript" src="keyfarsi.js"></SCRIPT>
<SCRIPT language="JavaScript" type="text/javascript" src="PECalendar.js"></SCRIPT>


کد text box اینه



<asp:TextBox dir="rtl" ID="txt_reshte_tahsily" runat="server" onkeypress="FKeyPress('');" onkeydown="FKeyDown('');" ></asp:TextBox>

twelve
یک شنبه 01 اردیبهشت 1387, 12:21 عصر
<asp:TextBox dir="rtl" ID="txt_reshte_tahsily" runat="server" onkeypress="FKeyPress('');" onkeydown="FKeyDown('');" ></asp:TextBox>


پسر خوب با این کد توقع داری کار هم کنه؟! Textbox به طور پیش فرض رویداد های onkeypress و onkeydown و ... رو ساپورت نمیکنه ، شما میبایست این attribute ها رو به روشی که در بالا گفتم در ساب روتین page_load به textbox مورد نظرتون اضافه فرمایید



<asp:TextBox id="TextBox1" runat="server">

H_T_O_A
یک شنبه 01 اردیبهشت 1387, 12:48 عصر
onkeypress="FKeyPress('');" onkeydown="FKeyDown('');"
میشه این کد معنی کنید یعنی بگید چه کار میکنه(فقط زیر دیپلم)

twelve
یک شنبه 01 اردیبهشت 1387, 13:03 عصر
کد:
onkeypress="FKeyPress('');" onkeydown="FKeyDown('');"
میشه این کد معنی کنید یعنی بگید چه کار میکنه(فقط زیر دیپلم)

onKeyDown و onKeyPress دو نمونه از رویدادهای جاوا اسکریپتی هستند که بر روی المان های HTML اجرا میشوند ، مقادیر این رویدادها توابع و یا دستورات جاوا اسکریپت (یا VBscript) است :
onkeyPress : زمانی رخ میدهد که در المان مورد نظر یک کلید فشرده شود (صفحه کلید)
onKeyDown : زمانی رخ میدهد که کلید فشرده شده به حالت اول باز گردد.

H_T_O_A
یک شنبه 01 اردیبهشت 1387, 13:27 عصر
خوب چرا توی تگ کنترل های asp نوشتیدش مگه جاوا اسکریپت روی کنترل های asp هم کار میکنه؟؟؟؟؟؟؟

zamoozegar
دوشنبه 29 مهر 1387, 18:41 عصر
سلام
من دقیقا همون کارا رو کردماماهیچ فایده ای نداشت
من از طریق add exict item در sloution فایلو add کردم و در page load اینا رو نوشتم
منو راهنمایی کنید
ممنون

zamoozegar
دوشنبه 29 مهر 1387, 18:42 عصر
میشه کاملتر

amir.NET2
دوشنبه 29 مهر 1387, 18:56 عصر
سلام دوست عزیز این سوال هیچ ربطی به ASP.NET نداره و مربوط به Client Side میشه . اصلا لازم نیست از کنترل TextBox خود ASP.NET استفاده کنی از کنترل Input اچ تی ام ال استفاده کن و خصیصه RunAt رو مساوی با سرور قرار بده تا سمت سرور بتونی بهش دسترسی داشته باشی . برای گرفتن مقدارش هم به جای .Text از .Value استفاده کن

نمونه کد :


<script language="Javascript">
function storeCaret(textEl) {
if (textEl.createTextRange)
textEl.caretPos = document.selection.createRange().duplicate();
}
var lang = 1;
var farsikey = [
0x0020, 0x0021, 0x061B, 0x066B, 0x00A4, 0x066A, 0x060C, 0x06AF,
0x0029, 0x0028, 0x002A, 0x002B, 0x0648, 0x002D, 0x002E, 0x002F,
0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
0x0038, 0x0039, 0x003A, 0x0643, 0x003E, 0x003D, 0x003C, 0x061F,
0x066C, 0x0624, 0x200C, 0x0698, 0x0649, 0x064D, 0x0625, 0x0623,
0x0622, 0x0651, 0x0629, 0x00BB, 0x00AB, 0x0621, 0x004E, 0x005D,
0x005B, 0x0652, 0x064B, 0x0626, 0x064F, 0x064E, 0x0056, 0x064C,
0x0058, 0x0650, 0x0643, 0x062C, 0x005C, 0x0686, 0x00D7, 0x0640,
0x200D, 0x0634, 0x0630, 0x0632, 0x064A, 0x062B, 0x0628, 0x0644,
0x0627, 0x0647, 0x062A, 0x0646, 0x0645, 0x067E, 0x062F, 0x062E,
0x062D, 0x0636, 0x0642, 0x0633, 0x0641, 0x0639, 0x0631, 0x0635,
0x0637, 0x063A, 0x0638, 0x007D, 0x007C, 0x007B, 0x007E ];


function changeLang() {
if (lang == 0) {
lang = 1;
return true;
}
else {
lang = 0;
return true;
}
}

function FKeyDown (txtFrm){
var key = window.event.keyCode;
if (key == 145){
if (lang == 0) {
lang = 1;
return true;
}
else {
lang = 0;
return true;
}

}

}
function FKeyPress(txtFrm) {
var key = window.event.keyCode;

if (key == 13) { window.event.keyCode = 13; return true; }

if (lang == 1) {
if (key == 0x0020 && window.event.shiftKey)
window.event.keyCode = 0x200C;
else
window.event.keyCode = farsikey[key - 0x0020];
if (farsikey[key - 0x0020] == 92) {
window.event.keyCode = 0x0698;
}
if (farsikey[key - 0x0020] == 8205) {
window.event.keyCode = 0x067E;
}
}
return true;
}
function change(obj){
if (lang==0)
lang=1
else
lang=0;
obj.focus();
}
</script>
کنترل Input رو به صورت زیر ست کنید


<input runat="server" type="text" size="20" onkeypress=FKeyPress(); onkeydown=FKeyDown();>

r_mehrizi
سه شنبه 30 مهر 1387, 07:51 صبح
شما بنویسید


PrivateSub SetJavaScripts()
Me.txtm_name.Attributes.Add("onkeydown", "javascript:FKeyDown();")
txtm_name.Attributes.Add("onkeypress", "javascript:FKeyPress();CheckAlpha(this);")


تابع های زیر را هم داخل یک فایل جاوا بنویسید و لینک اون را داخل مسترپیج بذارید


function FKeyDown()
{
if (window.event.shiftKey && window.event.altKey) {
if (lang == 0) {
lang = 1;
window.defaultStatus = "Farsi Mode";
}
else {
lang = 0;
window.defaultStatus = "English Mode";
}
returnfalse;
}
returntrue;
}
// change the Farsi
function FKeyPress()
{
var key = window.event.keyCode;
// Avoid processing if control or higher than ASCII (i.e., in Arabic Windows)
if (key < 0x0020 || key >= 0x00FF)
return;
if (lang == 1) { //If Farsi
if (key == 0x0020 && window.event.shiftKey) // Shift-space -> ZWNJ
window.event.keyCode = 0x200C;
else
window.event.keyCode = farsikey[key - 0x0020];
}
returntrue;
}
function CheckAlpha(element)
{
if ((event.keyCode<1741 && event.keyCode>1560))
;
else
if (event.keyCode==32)
;
else
event.returnValue=false
}
function CheckAlpha_Num(element)
{

if ((event.keyCode<1741 && event.keyCode>1560))
;
else
if (event.keyCode==32)
;
else
if(event.keyCode<48 || event.keyCode>57)
;
else
event.returnValue=false
}


داخل page load صفحه هم یادتون نره تابع را فرا خوانی کنید به این صورت

If Not IsPostBack Then
setjavascripts()
End If

DotNet_Elf
شنبه 06 خرداد 1391, 11:03 صبح
سلام دوست عزیز.مطمئن هستی که کد نوشته شده توی همه مرورگرها کار می کنه؟
window.event.keyCode فکر کنم مخصوص اینترنت اکسپلورر هست.
من اگر جای شما بودم کد خودم رو توی KeyUp می نوشتم که توی همه مرورگرها هم کار کنه. یعنی وقتی کاربر کلید رو ول می کرد میومدم توی متن TextBox همه حروف انگلیسی رو به معادل فارسی اونها تبدیل می کردم این جوری شاید بهتر باشه