PDA

View Full Version : حرفه ای: تایپ فارسی وقتی زبان سیستم انگلیسی است



bermoda_khatar69
چهارشنبه 06 آذر 1392, 09:11 صبح
سلام من به دنبال کدی هستم که وقتی زبان سیسیتم کاربر انگلیسی هست و می خواد در تکس باکس های سایت متنی رو بنویسه زبان سیستم رو عوض نکنه و تایپ خودش رو با زبان انگلیسی انجام بده ولی چیزی که در تکس باکس سایت نمایش می ده حروف فارسی باشن. نمونه : مثل سایت سنجش که وقتی زبان سیستم رو به فارسی تغییر می دیم پیغام می ده و میگه زبان خود را به انگلیسی تغییر دهید و وقتی تغییر می دیم فارسی تایپ می کنه

Javidhb
چهارشنبه 06 آذر 1392, 15:38 عصر
1. اول به ازای هر بار تایپ یه حرف، بررسی میکنه که انگلیسیه یا نه... اگه نبود پیغام میدی که کیبورد رو بزاره رو انگلیسی.
2. حرف انگلیسی رو میگیری و به فارسی تبدیل میکنی.




//انتخاب
var txtArea = document.getElementById('enOnly');

//اجرای تابع با شروع تایپ
txtArea.onkeypress = function(e){
var keycode = e.keyCode || e.charCode; //بدست آوردن کد دکمه فشرده شده

if(!isPersian(keycode))
{
alert('زبان کیبورد رو روی انگلیسی قرار دهید.')

return false; // وارد نکردن حرف
}

var letter = String.fromCharCode(keycode); // حرف تایپ شده

//وارد کردن معادل فارسی حرف وارد شده
txtArea.innerHTML += changeEngToPer(letter);

return false; // سرخود کاراکتر انگلیسی رو وارد نکنه!
};

//بررسی اینکه کاراکتر تایپ شده فارسی یا نه
function isPersian(char)
{
if ((char >= 48 && char<= 57) || // 0-9
(char >= 65 && char <= 90) || // A-Z
(char >= 97 && char <= 122) || // a-z
(char == 32)) // space
{
return true;
}
}

//گرفتن کاراکتر انگلیسی و تحویل دادن کاراکتر فارسی -- طبق کیبورد استاندارد
function changeEngToPer(letter)
{
var smallEngLetter = {
'a' : 'ش',
'b' : 'ذ',
'C' : 'ژ'
//بقیه هم دست خودت رو میبوسه
};

//برگردوندن معادل فارسی
return smallEngLetter[letter];
}




دمــــــو (http://jsfiddle.net/XLBkT/)=> فقط a,b و shift + c یا همون C بزرگ کار میکنه (بقیه رو خودت وارد کن):چشمک:

Iman_Aslani
چهارشنبه 06 آذر 1392, 18:15 عصر
توی این سایت یه کلاس برای این کار هست http://farsitype.ir/

bermoda_khatar69
شنبه 09 آذر 1392, 15:44 عصر
ممنون از راهنمایی شما

ولی وقتی کد رو می نویسم این ارور رو میده 'char' is a new reserved word and should not be used as an identifier

وقتی هم که تابع رو فراخوانی می کنم هیچ عکس العملی نشون نمی ده

کد کلی رو می نویسم ببینید کجا مشکل داره




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
<script type ="text/javascript" >

function test(){

//انتخاب
var txtArea = document.getElementById('enOnly');

//اجرای تابع با شروع تایپ
txtArea.onkeypress = function(e){
var keycode = e.keyCode || e.charCode; //بدست آوردن کد دکمه فشرده شده

if(!isPersian(keycode))
{
alert('زبان کیبورد رو روی انگلیسی قرار دهید.')

return false; // وارد نکردن حرف
}

var letter = String.fromCharCode(keycode); // حرف تایپ شده

//وارد کردن معادل فارسی حرف وارد شده
txtArea.innerHTML += changeEngToPer(letter);

return false; // سرخود کاراکتر انگلیسی رو وارد نکنه!
};

//بررسی اینکه کاراکتر تایپ شده فارسی یا نه
function isPersian(char)
{
if ((char >= 48 && char <= 57) || // 0-9
(char >= 65 && char <= 90) || // A-Z
(char >= 97 && char <= 122) || // a-z
(char == 32)) // space
{
return true;
}
}

//گرفتن کاراکتر انگلیسی و تحویل دادن کاراکتر فارسی -- طبق کیبورد استاندارد
function changeEngToPer(letter)
{
var smallEngLetter = {
'a' : 'ش',
'b' : 'ذ',
'C' : 'ژ'
//بقیه هم دست خودت رو میبوسه
};

//برگردوندن معادل فارسی
return smallEngLetter[letter];
}


}


</script>
</head>
<body onload ="test">

<input type ="text" />



</body>
</html>

2undercover
شنبه 09 آذر 1392, 15:55 عصر
char یکی از کلمات رزرو شده در JS هست.

هر جا از char استفاده شده رو به یک نام دیگه تغییر بدید!

bermoda_khatar69
شنبه 09 آذر 1392, 15:58 عصر
ممنون دیگه ارور نمی ده ولی کد بالا رو هم روی تکس باکس اعمال نمی کنه کجاش اشتباه کردم

chikar
یک شنبه 10 آذر 1392, 22:57 عصر
http://farsitype.ir/