🔥 ۴۰ درصد تخفیف ثبت‌نام دوره‌ها قبل از افزایش قیمت‌ها
۰ ثانیه
۰ دقیقه
۰ ساعت
۸ تابال خوئینی‌ها
جواب مینی پروژه تغییر keyCode
جامعه جاوا اسکریپت ایجاد شده در ۱۰ دی ۱۳۹۹

سلام 

توی مینی  ، مینی :) پروژه ایی که داشتیم  استاد این رو گفتن که با استفاده از پراپرتی keyCode میتوان مقدار پیشفرض را با مقدار دلخواه جایگزین کرد ولی مشکلی که بود این بود که خود مقدار ان کلید هم اورده میشد که فرمودند این رو میشه به چندین روش تخلیه کرد ، راستش من حدود نیم ساعت تلاش کردم و امتحان کردم ولی نتیجه نداد تا دست به سرچ شدم و توی سایت stackoverflow  تونستم یک راه حل براش پیدا کنیم که استفاده از تابع preventDefault هستش  ولی فکر کنم باز راه بهتری داشته باشه که ممنون میشم راهنمایی کنید .

 

    <!-- ------------ HTML ------------ -->
    <input type="text" onkeydown="keyDown(event)">

و کد‌های جاوا اسکریپت 


    // ------------ JAVASCRIPTS ------------
    var persianchars = {
        83: "س"
    }
    function keyDown(event) {
        event.preventDefault();
        event.target.value = persianchars[event.keyCode];
    }

 

 

 

چیزی که الان متوجه شدم مشکلی که بود با کد‌های بالا امکان وارد کردن یک کارکتر بیشتر نبود که با اضافه کردن =+ به کد این امر برطرف شد و مشکل بعدیی که داره کد بالا اسپیش را شامل نمیشد که با وارد پیدا کردن کد ان که 32 است اون رو هم اضافه کردم 

که کد پایین کاملتره به نظرم : 

 

 

    <!-- ------------ HTML ------------ -->
    <input type="text" onkeydown="keyDown(event)">

 

     // ------------ JAVASCRIPTS ------------
       var persianchars = {
        32: " ",
        83: "س",
        65: "ش"
    }
    function keyDown(event) {
        console.log(event)
        event.preventDefault();
        event.target.value += persianchars[event.keyCode];
    }

 

 

تابال خوئینی‌ها ۱۰ دی ۱۳۹۹، ۱۴:۳۵

منم این سایت رو پیدا کردم جالب بود http://keycode.info/

صلاح نجفی ۲۷ بهمن ۱۳۹۹، ۱۲:۴۱

قسمت بک اسپیس هم بنده درست کردم 

 var a;
            function keydown(event){
                console.log(event);
                    if (event.keyCode == 8) {
                    a = String(event.target.value);
                    a = a.substring(0, a.length - 1);
                    console.log(a);
                }
                else{
                 event.preventDefault();
                }
                event.target.value+=language[event.keyCode];
            }
            var language={
                83:'س',
                84:'ف',
                16:'',
                18:'',
                8:''
            }
صلاح نجفی ۲۷ بهمن ۱۳۹۹، ۱۲:۵۷

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Test Page</title>
</head>
<body>
    <div style="text-align: center; margin-top: 100px;">
        <label for="name">نام خود را وارد کنید</label>
        <input type="text" name="name" id="name" onkeydown="checkText(event)" placeholder="کیبورد در حالت انگلیسی باشد">
    </div>
    <script>
        var keyCode = {
            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  :   'گ',
            shft72  :   'آ',
            shft67  :   'ژ',
        };
        function checkText(event){
            var txt = event.target.value;
            console.log(event);
            if (keyCode[event.keyCode] && !event.ctrlKey){
                event.returnValue = false;
                (event.shiftKey && (event.keyCode === 72 || event.keyCode === 67)) ? txt += keyCode['shft' + event.keyCode]: txt += keyCode[event.keyCode];
            }else{
                txt = event.target.value;
            }
            event.target.value = txt;
        }
    </script>
</body>
</html>
فرساد توفیق ۲۹ بهمن ۱۳۹۹، ۱۶:۵۰
 <input type="text" onkeydown="languageChanger(event)" />
    <p id="textArea"></p>
<script>
      var Farsi = {
        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: 'ظ',
      };
      function languageChanger(event) {
        if (event.keyCode == 8) {
          let newString = document.getElementById('textArea').innerHTML;
          newString = newString.substring(0, a.length - 1);
          document.getElementById('textArea').innerHTML = newString;
        } else
          document.getElementById('textArea').innerHTML += Farsi[event.keyCode];
      }
    </script>

+back space & space

فرود پیران ۲۹ بهمن ۱۳۹۹، ۱۷:۳۴

قسمت بک اسپیس  ساده شده کد توسط محمدامین نیکو 

function keydown(event){
                console.log(event);
                    if (event.keyCode != 8) {
                               event.preventDefault();
                              event.target.value+=language[event.keyCode];
            }
گوماتا تهرانی ۲۲ مرداد ۱۴۰۰، ۱۱:۱۷

من کد رو به همراه backspace و space نوشتم ولی بدون نیاز به تعریف مجدد اون ها:

کافیه key‌های لیست رو به صورت number داخل یک لیست جدید بریزیم (چون ب صورت پیش فرض string هستند) بعدش شرط بزاریم اگه keyCode‌ها توی لیست جدید هستن، کد ترجمه اجرا بشه و اگه نیستن خاصیت خود کلید‌ها اجرا بشه.
داخل لیست هم فقط دکمه‌های مشترک فارسی و انگلیسی رو تعریف کنیم

*برای تبدیل keyCode‌های لیست به number از stackoverflow کمک گرفتم

        
    <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 PersianKeys = Object.keys(PersianChars).map((i) => Number(i));
            // تبدیل کلید‌ها به یک لیست عددی جدید
            function KeyDown(event){
                if (PersianKeys.includes(event.keyCode)) {
                    event.preventDefault();
                    event.target.value += PersianChars[event.keyCode]
                    console.log(event)
                }
داریا عبادی ۲۹ مرداد ۱۴۰۰، ۱۵:۲۳

سلام به همه دوستان فعال در این تاپیک

چه تاپیک خوبی شده

به به

ادامه بدید :) سعی کنید کد را تمیزتر کامل‌تر و بهینه‌تر کنید

آقای نوشزاد کاویانی ۰۳ شهریور ۱۴۰۰، ۱۴:۱۳