function persianChars(e) {
var chars = {
32: ' ',
65: 'ش',
66: 'ذ',
67: 'ز',
68: 'ی',
69: 'ث',
70: 'ب',
71: 'ل',
72: 'ا',
73: 'ه',
74: 'ت',
75: 'ن',
76: 'م',
77: 'ئ',
78: 'د',
79: 'خ',
80: 'ح',
81: 'ض',
82: 'ق',
83: 'س',
84: 'ف',
85: 'ع',
86: 'ر',
87: 'ص',
88: 'ط',
89: 'غ',
90: 'ظ',
186: 'ک',
188: 'و',
219: 'ج',
220: 'پ',
221: 'چ',
222: 'گ',
shift72: 'آ',
shift67: 'ژ',
shift16: '',
shift8: ''
};
e.preventDefault();
if (Boolean(chars[e.keyCode]) || e.keyCode === 8) {
if (e.keyCode === 8) {
var string = String(e.target.value);
e.target.value = string.substring(0, string.length - 1);
} else if (e.shiftKey) {
var shiftedKey = 'shift' + Number(e.keyCode);
if (Boolean(chars[shiftedKey])) {
e.target.value += chars[shiftedKey];
}
} else {
e.target.value += chars[e.keyCode];
}
}
}
طبق این کد اگر کلیدی از کیبورد، توی chars تعریف نشده بود، مقدار undefined چاپ نمیشه
برای backspace تعریف شده که یک حرف از آخر رشته رو پاک کنه.
برای کلیدهای ترکیبی که با shift هستن، از متغیر shiftedKey استفاده شده تا برای هر کلید، یک if جداگانه نیاز نباشه