جواب مینی پروژه تغییر keyCode

پرسیده شده
فعالیت 901 روز پیش
دیده شده 932 بار
3

سلام 

توی مینی  ، مینی :) پروژه ایی که داشتیم  استاد این رو گفتن که با استفاده از پراپرتی 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];
    }

 

 

 

فایل پیوست

1
حذف شده

چیزی که الان متوجه شدم مشکلی که بود با کد های بالا امکان وارد کردن یک کارکتر بیشتر نبود که با اضافه کردن =+ به کد این امر برطرف شد و مشکل بعدیی که داره کد بالا اسپیش را شامل نمیشد که با وارد پیدا کردن کد ان که 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];
    }

 

 

فایل پیوست

مهدی محمدی زاده

توسط

مهدی محمدی زاده

10 دی 99

1
حذف شده

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

فایل پیوست

محمدامین نیکو

توسط

محمدامین نیکو

27 بهمن 99

3
حذف شده

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

 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:''
            }
فایل پیوست

محمدامین نیکو

توسط

محمدامین نیکو

27 بهمن 99

1
حذف شده

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

<!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>
فایل پیوست

سعید ریحانی

توسط

سعید ریحانی

29 بهمن 99

1
حذف شده
 <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

فایل پیوست

sara madani

توسط

sara madani

29 بهمن 99

1
حذف شده

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

function keydown(event){
                console.log(event);
                    if (event.keyCode != 8) {
                               event.preventDefault();
                              event.target.value+=language[event.keyCode];
            }
فایل پیوست

عظیم علیدادی

توسط

عظیم علیدادی

22 مرداد 00

0
حذف شده

من کد رو به همراه 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)
                }
فایل پیوست

عماد چشم آذر

توسط

عماد چشم آذر

29 مرداد 00

0
حذف شده

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

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

به به

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

فایل پیوست

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

توسط

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

3 شهریور 00

0
حذف شده

سلام

در زیر کدی که بنده برای تمرین این جلسه نوشتم را قرار میدهم. امیدوارم مفید باشد.

 

<!DOCTYPE html>
<html>

<head>
    <title>Events Exercise</title>
</head>

<body style="text-align: center;
            font-size: xx-large;
            margin-top: 5%;">

    <input type="text" onkeydown="kyeDown(event)" style="font-size: 25px;">

    <script>
        var IR_char = {
            220: 'پ',
            221: 'چ',
            219: 'ج',
            80: 'ح',
            79: 'خ',
            73: 'ه',
            85: 'ع',
            89: 'غ',
            84: 'ف',
            82: 'ق',
            69: 'ث',
            87: 'ص',
            81: 'ض',
            222: "گ",
            186: 'ک',
            76: 'م',
            75: 'ن',
            74: 'ت',
            72: 'ا',
            71: 'ل',
            70: 'ب',
            68: 'ی',
            83: 'س',
            65: 'ش',
            188: 'و',
            77: 'ئ',
            78: 'د',
            66: 'ذ',
            86: 'ر',
            67: 'ز',
            88: 'ط',
            90: 'ظ',
        }


        function kyeDown(event) {

            if (IR_char[event.keyCode] != undefined) {
                event.preventDefault();
                event.target.value += IR_char[event.keyCode];
            } else {}
        }
    </script>

</body>

</html>

 

فایل پیوست

امیر محمود کنگرلو

توسط

امیر محمود کنگرلو

18 آبان 00