سلام
یه بحثی که در فرم های ارسال اطلاعات مطرح میشه فارسی نوشتن درون کادر ها( 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="آدرس عکس" >