🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ افضلی
مینی پروژه تبدیل حروف
حسین دادخواه حل شده توسط حسین دادخواه
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 جداگانه نیاز نباشه

 

 

سلام جناب افضلی

من کد را تست نکردم ولی ظاهرا درسته و تکنیک‌های خوبی هم استفاده شده

آفرین

بهترین پاسخ
حسین دادخواه ۰۲ آبان ۱۴۰۰، ۰۲:۴۷