فارسی شدن خودکار کیبورد (دوباره)

sadina

Member
سلام

من ميخوام وقتي فرم اجرا ميشه روی یک textbox خاص كيبورد به
صورت خودكار به حالت فارسي در بياد
يعني در واقع نيازي به فشردن كليدهايalt و shift نباشه ولی نمی خوام فقط فارسی بنویسه
حالت پیش فرض فارسی باشه
کد معروف آقا مجید را هم دیدم و تاپیک مربوطه را هم خواندم مقالش را هم خواندم ولی بازم نفهمیدم

با تشکر
 

mazoolagh

Active Member
لازم نيست بدوني كد آقا مجيد چكار ميكنه فقط كپيش كن تو صفحه ات!
 

sadina

Member
سلام

چطور باید استفاده کنم
مثلا از تابع changelang() ، روی چه eventی باید
صداش بزنم
 

sadina

Member
این کار را انجام می دهم ولی نمی شود
می شه دقیقا بگی باید چیکار کنم
 

sadina

Member
من کد اقا مجید را کپی می کنم بعد
<input name="title" type="text" id="title" style="width:100%" value="" onFocus="return changeLang()" >

می خواهم وقتی صفحه load می شه روی textbox
صفحه کلید جهتش فارسی باشه نه اینکه فقط فارسی
بنویسه
 

sadina

Member
با اين دستور اين كار انجام نمي شه

اگر جهت صفحه كليد انگليسي باشه وقتي صفحه
load میشه بازم جهت صفحه کلید لاتینه

شما خودتون این دستور را امتحان کردین
 

sadina

Member
من وقتي از اين كد براي دو تا فيلد در صفحه استفاده
مي كنم با عوض كردن يكي دومي هم تغيير مي كند

با اين كه اسم فيلدها را هم توي توابع صدا مي زنم
 

omidak

Active Member
سلام:
بله برایه کل سیستم تغییر میکنه. شما باید یه خورده برنامه یهش اظافه کنید که اون فیلدهایی رو که شما بهش میدید رو جدا گانه Handler کنه.
 

pedramr

Active Member
به من سر بزنيد

يه سري به وبلاگ من بزنين . جواب خيلي از سوالها اونجاست .
 

mosi20

Active Member
سلام

یه بحثی که در فرم های ارسال اطلاعات مطرح میشه فارسی نوشتن درون کادر ها( field ) هستش .امروز یه روش برای نگارش فارسی در فرم ها را ذکر و بررسی میکنیم. اول اینو بگم که این آموزش را برو بچه های فروم پرشین تولز دادند و من اینجا اونو دوباره نوشتم .

ابتدا کد جاوا ی زیر را درون صفحه یتان قرار دهید


<SCRIPT language=javascript type=text/javascript>
//=============================================
var farsi = true ;
var s = new Array(32,33,34,35,36,37,1548,1711,41,40,215,43,
1608,45,46,47,48,49,50,51,52,53,54,55,56,
57,58,1603,44,61,46,1567,64,1616,1584,125,
1609,1615,1609,1604,1570,247,1600,1548,47,
8217,1583,215,1563,1614,1569,1613,1601,
8216,123,1611,1618,1573,126,1580,1688,
1670,94,95,1662,1588,1584,1586,1610,1579,
1576,1604,1575,1607,1578,1606,1605,1574,
1583,1582,1581,1590,1602,1587,1601,1593,
1585,1589,1591,1594,1592,60,124,62,1617)
var b = navigator.userAgent.toLowerCase() ;
var msie = (b.indexOf('msie')>-1) ? true : false ;
var gecko = (b.indexOf('gecko')>-1) ? true : false ;
var opera = (b.indexOf('opera')>-1) ? true : false ;
//=============================================
function convert(fld,e) {
k =(msie) ? event.keyCode : e.which ;
if (farsi) {
if (msie && k>32 && k<128) event.keyCode = s[k-32] ;
else if (gecko && k>32 && k<128) {
var EVT = document.createEvent("KeyEvents") ;
EVT.initKeyEvent("keypress", true, true, document.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, String.fromCharCode(s[k-32]).charCodeAt(0)) ;
e.preventDefault() ;
e.target.dispatchEvent(EVT) ;
}
else if (opera && k>31 && k<128) {
fld.value = fld.value + String.fromCharCode(s[k-32]) ;
return false ;
}
}
}
//=============================================
function rtl_ltr(fld,btn) {
var xfld = document.getElementsByName(fld).item(0)
if (xfld.style.direction == "ltr") {
xfld.style.textAlign = "right" ;
xfld.style.direction = "rtl" ;
btn.value = "RTL" ;
}
else {
xfld.style.textAlign = "left" ;
xfld.style.direction = "ltr" ;
btn.value = "LTR" ;
}
xfld.focus() ;
}
//=============================================
function en_fa(fld,btn){
farsi = !farsi ;
if (farsi) { btn.value = "FA" ; }
else { btn.value = "EN" ; }
document.getElementsByName(fld).item(0).focus() ;
}
//=============================================
</SCRIPT>




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

حالا باید یه کادر برای نگارش درون اون تعریف کنید.

<INPUT onkeypress="return convert(this,event)" dir=rtl name=نام کادر size="اندازه">




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

حالا یه دکمه تعریف میکنیم که کار تغییر زبان را انجام بده یعنی با کلیک روی اون زبان نوشته عوض بشه:

<INPUT onclick="en_fa('نام کادر',this)" type=button value=FA>




حالا یه دکمه ی دیگه هم برای تغییر جهت نوشته درست میکنیم:

<INPUT onclick="rtl_ltr('نام کادر',this)" type=button value=RTL>


فقط توجه کنید که نام کادر را در همه ی کدهای بالا باید به یکی باشه .

یه نکته دیگه اگه بخواهید میتونید برای تغییر زبان به جای یه دکمه ی معمولی از یه عکس اتفاده کنید که در اون صورت باید از کد زیر استفاده کنید:

<img id="languageImage" style="CURSOR: hand" onclick="en_fa('نام کادر',this)" src="آدرس عکس" >
 

mazoolagh

Active Member
آقاي mosi عزيز! از اينكه براي پدر من طلب آمرزش كردي خيلي خيلي ممنونم (خوشبختانه هنوز سايه اش روي سرم هست! ولي خدابيامرزي فرستادن هميشه ثواب داره!)
بعد از اين نمونه اي كه شما گذاشتي چند بار ديگه هم در اين كد تغييرات دادم و مواردي رو كه دوستان خواستارش بودند بهش اضافه كردم ولي چون سايت پرشين تولز در نمايش كد داراي اشكالاتي بود آخرين اصلاحاتش در اون سايت نيست و ميتونيد اون رو از همون آدرسي كه در يك پست قبل از شما دادم برداريد (يك صفحه نمونه هست - براي برداشتن كدش اون رو view source كنيد!)
اگر هر سوالي در باره نحوه كار يا پيشنهادي براي بهبود و تكميل اين كد داريد لطفا در اين تاپيك مطرح كنيد: http://forum.majidonline.com/showthread.php?t=28687

اگر هم مايل هستيد سير تكميل اين كد و شرح عملكرد كار آن در مرورگرهاي مختلف و همچنين قابليتهاي ديگري كه در آخرين نمونه آن لحاظ شده است را ببينيد به اينجا برويد:http://forum.persiantools.com/t12492.html

مازولاق
 

جدیدترین ارسال ها

بالا