يؤدي الضغط على أي مفتاح مع مسج ... وتحديد أي مفتاح تم الضغط

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

سؤال

وأود أن يكون عنصر الإدخال (نوع = النص) أو عنصر جزء النص من صحة حيوي عن طريق إحداث ضربات المفاتيح الخاصة. هذا وسوف تستخدم لإدخال نظام الكتابة الصينية، وذلك على سبيل المثال:

وأنواع المستخدم "MA2" إلى عنصر الإدخال. مشغلات الحدث KeyDown عن كل ضغطة، و2 يظهر أبدا. بدلا من ذلك، عندما يقوم المستخدم بالضغط على "2" في "أ" سوف يحصل على علامة لهجة، ومثل هذا: "á". في النهاية، فإن المستخدم قد كتبته: "ما"

.

ويمكن تحقيق ذلك من خلال قراءة وتغيير قيمة المدخلات بأكملها باستخدام $ (عنصر) .val () ولكن عندما عنصر المدخلات ديه التركيز وهو تعيينها قيمة من خلال الدعوة .val ( "شيء ما")، ويتحرك المؤشر إلى نهاية النص. هذا يعمل بشكل جيد في معظم الحالات لأن المستخدم لا يزال مجرد كتابة في نهاية هذا المجال، ولكن أريد هذا العمل في جميع الحالات.

... حل آخر لهذه المشكلة يتمثل في الحصول على / تعيين موقع المؤشر في الإدخال أو جزء النص عنصر. أنا لا أعتقد أن هذا هو الممكن في جافا سكريبت، ولكن.


وهكذا، كان ريمي على الطريق الصحيح بالتأكيد. أن الضغط على المفاتيح اثار لن تسمح لي أن أحرف خاصة المدخلات من دون الكثير من المتاعب على أي حال. بدلا من ذلك، I قبض على الحدث KeyDown وتعيين قيمة الإدخال / جزء النص، ثم نقل الإقحام.

ولم أجد أي شيء جيد عن الإقحام الحصول على / الإعداد في مسج، ولكن ما يلي حقا كسر تلك المشكلة أسفل بالنسبة لي. أنا ما بعد وجود صلة لبلدي النهائي كود بينيين الإدخال عندما انها مستقرة. انها قريبة جدا الآن.

http://blog.vishalon.net/Post/57.aspx http://demo.vishalon.net/getset.htm

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

المحلول

وليس لديك الكثير من الحظ اثار بضغطة - أنا متأكد تماما أن ما لم يثق بضغطة (أي ينشأ من المتصفح)، لن يتم التقطه

.

ومع ذلك، يمكنك القيام استبدال نص وإدراج قيراط الظهر حيث كان - بدلا من اطلاق النار عليه حتى نهاية السلسلة. تحتاج إلى استخدام setSelectionRange وcreateTextRange (لIE).

ولقد وضعت قليلا تجريبي - بدائل سترى لا تتطابق كلمات حقيقية، لكنه يظهر كيف يعمل:

http://jsbin.com/emudi/ (ولتعديل مصدر <أ href = على "HTTP : //jsbin.com/emudi/edit "يختلط =" noreferrer "> http://jsbin.com/emudi/edit )

والحيلة هي أن يحيط علما حيث قيراط هو استبدال كلمة العثور على استخدام SUBSTR (بدلا من التعابير المنطقية لتجنب استبدال المباريات خاطئة) ومن ثم استبدال قيراط في نهاية الكلمة الجديدة.

ويتم تشغيل بديل في الصحافة الفضاء أو طمس بعيدا. مذكرة بشأن هذا - هل يمكن أن تؤدي إلى الاستبدال على حرف معين (أي في '2') - ولكن أنا لا أوصي بالبحث عن بدائل على كل بضغطة

نصائح أخرى

وأيضا، لرمز بسيط السيطرة على "الإقحام" بطريقة عبر متصفح هذا يمكن أن تكون مفيدة:

http://javascript.nwbox.com/cursor_position/

وأواخر قليلا مع الإجابة ولكن أنا متأكد من أنك سوف لا تزال تجد هذه الاشياء القديمة مفيدة.

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