كيفية تجنب الأرقام السحرية عند مطابقة الحدث.keyCode في جافا سكريبت

StackOverflow https://stackoverflow.com/questions/611852

سؤال

يمكن تجنب الأرقام السحرية عند مطابقة الضغط على المفاتيح في جافا سكريبت ؟

على سبيل المثال سيكون باستخدام 13 مباراة على مفتاح enter.

يمكنني تحديد بلدي الثوابت, ولكن أنا لا أعرف ما إذا كانت هذه القيم هي مستقرة بما فيه الكفاية عبر منصات مختلفة/متصفحات/لغات.

هل كانت مفيدة؟

المحلول

أول مرة حاولت أن تفعل هذا charCodeAt طريقة السلسلة.على سبيل المثال, إذا أردت كشف اضغط على المفتاح "a":

if ("A".charCodeAt(0) == event.keyCode) {
  /* Do stuff here. */
}

لاحظ أنني استخدمت الحالة العلوي "أ" بدلا من "أ".وذلك لأن الحدث.keyCode فقط كما ذكرت قيمة Unicode الحالة العلوي الرسالة (إذا كان ألفا مفتاح).ما يجعل هذه المشكلة قليلا شعر أن هناك عدة طرق للحصول على Unicode قيمة المفتاح الذي تم الضغط عليه.في فايرفوكس لديك:

  • هذا الحدث.keyCode
  • هذا الحدث.charCode
  • هذا الحدث.التي

وفقا موزيلا وثائق المطور ، Unicode قيمة المفتاح سيتم تخزينها في أي هذا الحدث.keyCode أو هذا الحدث.charCode, ولكن ليس على حد سواء.بغض النظر عن أي واحد لديه رمز ، كما سيتم تخزينها في هذا الحدث.التي.ومع ذلك ، إذا كانت القيمة المخزنة في charCode ، وسوف تكون حساسة لحالة الأحرف.لذا اعتمادا على حيث يمكنك الحصول على الأحداث الخاصة بك من ، قد تضطر إلى الاختيار ضد كل من "أ" و "أ".إذا كان لديك متسع من الحصول على المفتاح الخاص بك الحدث من "onkeydown حدث" يتم استهداف فايرفوكس, يمكنك الاعتماد على الحصول على حالة الأحرف (upper case) رمز المجموعة في هذا الحدث.keyCode.في الواقع, أنا اختبرت هذا على Firefox 3.0.3 على ويندوز XP, Firefox 3.0.4 على ماك 10.4, سفاري 3.2.1 على ماك 10.4 ، أومني ويب 5.8 على ماك 10.4 و يعمل كل نفس.ومع ذلك ، لم أحاول هذا على أي من إصدارات IE أو أوبرا ، إلخ.

إذا كنت ترغب في تطوير هذا من الصفر على الجهاز الخاص بك.أود أن أقترح الحصول على العديد من المتصفحات المختلفة كما يمكنك العثور على العديد من أنظمة التشغيل المختلفة كما يمكنك الوصول إلى القيام ببعض تجارب لمعرفة كيف كل متصفح التقارير مفتاح رموز.ومع ذلك, شخص ما لديه بالفعل هذا العمل.ذكرت في واحدة من الإجابات أن السؤال الذي يرتبط كمثال!هو أحد المكونات في مسج يسمى js-مفاتيح الاختصار.انها تسمح لك لتسجيل رد من المهام التي يجب تنفيذها عند المفتاح أو تركيبة المفاتيح يتم الضغط.مثال على الاستخدام لقد نسخها من موقع:

$(document).bind('keydown', 'Ctrl+a', fn);

وقد تم اختباره للعمل على مجموعة متنوعة من متصفحات مختلفة/منصات, حتى إذا كنت تستخدم مسج, وربما هذا هو الطريق للذهاب.إذا كنت لا تريد استخدام مسج لسبب ما لم تكن من الحظ.ويبدو أن هذا كان على أساس آخر النصي التي يمكن أن تستخدم بدلا من ذلك.أنا لم تستخدم أي من هذه المكتبات شخصيا, لذا لا أستطيع أن يشهدوا على سهولة استخدام أو فعالية.أنه قال: إذا كان لديك مشكلة, هذا هو الاتجاه أود أن ننظر إلى حل لها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top