🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۸ دکتر مهرشاد کاویانی
جواب مینی پروژه تغییر 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)
                }
استاد گلناز مجاهد ۲۹ مرداد ۱۴۰۰، ۱۵:۲۳

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

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

به به

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

بامین صباغ ۰۳ شهریور ۱۴۰۰، ۱۴:۱۳