اضافه کردن مقادیر "ژ" و "آ"

پرسیده شده
فعالیت 973 روز پیش
دیده شده 382 بار
1

سلام من کد رو کامل نوشتم کار میکنه و برای اضافه کردن ژ و آ هم شرط گذاشتم اگه shiftKey برابر true شد مقادیر keyCode ها برابر ژ و آ بشن ولی یک مشکل داره: اینکه بعد از یک بار نگه داشتن shift مقادیر keyCode های مد نظر دیگه تغییر میکنه به مقادیر جدید (ژ - آ) 

چطور بدون طولانی شدن کد و نوشتن دوباره لیست برای شرط های مختلف میشه این باگ رو برطرف کرد؟

 

                if (event.shiftKey) {
                    PersianChars[67] = 'ژ'
                    PersianChars[72] = 'آ'
                }
فایل پیوست

عماد چشم آذر
عماد چشم آذر

29 مرداد 00

0
حذف شده

سلام
وقت به خیر

علتش اینه که شما دارید لیست (آرایه) ای که دارید را آپدیت میکنید
وقتی اولین بار وارد این شرط بشه دیگه ایندکس ۶۷ از آرایه PersianChars مقدارش ژ خواهد بود

شما به جای اینکه آرایه اصلی‌تون را تغییر بدید باید اونجایی که نمایش داده میشه را تغییر بدید

یا باید از یه متغییر واسطه استفاده کنید یا جایی که نمایش اتفاق میافته شرط بذارید

کد کامل را اگه بذارید راحت تر میشه راهنمایی کرد

فایل پیوست

مهرداد دادخواه

توسط

مهرداد دادخواه

3 شهریور 00

0
حذف شده

سلام
باگ رو برطرف کردم
کد هاش رو میزارم البته چنتا باگ دیگه بود اونا رو هم از قبل برطرف کرده بودم:
1_اگه کاربر دستش اشتباهی به دکمه ای غیر دکمه هایی که ما تعریف کردیم میخورد مقدار undefined چاپ میشد
2_بک اسپیس نیاز به تعریف داشت وگرنه مقدار undefined چاپ میشد

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <label for="">what is your name? </label>
    <input type="text" onkeydown="KeyDown(event)">
    
    <script>
       var PersianChars = {
            72: "ا",
            70: "ب",
            220: "پ",
            74: "ت",
            69: "ث",
            219: "ج",
            221: "چ",
            80: "ح",
            79: "خ",
            78: "د",
            66: "ذ",
            86: "ر",
            67: "ز",
            83: "س",
            65: "ش",
            87: "ص",
            81: "ض",
            88: "ط",
            90: "ظ",
            85: "ع",
            89: "غ",
            82: "ق",
            84: "ف",
            186: "ک",
            222: "گ",
            71: "ل",
            76: "م",
            75: "ن",
            188: "و",
            73: "ه",
            68: "ی",   
            77: "ئ",
        } 

        var PersianShift = {
            67: "ژ",
            72: "آ"
        }
        
        var PersianCharsKeys = Object.keys(PersianChars).map((i) => Number(i));
        var PersianShiftKeys = Object.keys(PersianShift).map((i) => Number(i));
        // تبدیل کلید های هر دو لیست به لیست های عددی جدید


        var shift = false;
        function KeyDown(event){
            if (event.shiftKey == true & PersianShiftKeys.includes(event.keyCode)) {
                event.preventDefault();
                event.target.value += PersianShift[event.keyCode]
            }
            else if (PersianCharsKeys.includes(event.keyCode)) {
                event.preventDefault();
                event.target.value += PersianChars[event.keyCode]
            }
        }


    </script>
</body>
</html> 

 

فایل پیوست

عماد چشم آذر

توسط

عماد چشم آذر

11 شهریور 00