واجهت مشكلة صعبة للغاية اليوم. عندما كنت أقوم ببعض التحقق من مربعات الإدخال ، كان منطق العمل في مشروعي هو أنه عندما اخترت خيارًا محددًا من تحديد ، تم عرض مربع إدخال للمستخدم لإدخال الأشياء. ومع ذلك ، إذا لم يفعل المستخدم شيئًا ، فيجب أن يطفو مربع تحذير على المستخدم لإدخاله. بعد الإدخال ، أود إخفاء المدخلات.
لذلك ، تنشأ المشكلة التالية. عند عرض مربع الإدخال ، يجب الحصول على التركيز تلقائيًا. في هذا الوقت ، أستخدمه
نسخة الكود كما يلي:
document.getElementById ('id'). focus () ؛
حسنًا ، لقد جربته وعمل بشكل جيد للغاية. لم أستطع إلا أن أشعر بالسعادة وحصلت على ذلك!
لكن الحسابات ليست جيدة مثل الحسابات البشرية. عندما كنت أختبر مع Firefox ، انتهى الأمر. كان من السهل استخدامه عندما عرضت الإدخال لأول مرة ، لكن عندما أغلقت مربع تذكير التنبيه ، لم يتمكن المدخلات من التركيز.!
المشكلة صعبة ولا أعرف السبب. لذلك ، راجعت إجابات الماجستير على الإنترنت ، ووجدت الخدعة التالية ، وجربتها ، وكانت مفيدة حقًا!
بعد التنبيه ، الأصل
نسخة الكود كما يلي:
document.getElementByIdx ('id'). Focus () ؛
التغيير إلى
نسخة الكود كما يلي:
window.settimeout (function () {document.getElementById ('id'). focus () ؛} ، 0) ؛
جيد ، حل المشكلة!
يشير SetTimeout إلى تنفيذ التعبير السابق بعد تأخير الوقت المحدد بعد التحميل. بالطبع ، هنا هو تنفيذ الوظيفة بعد تأخير 0 مللي ثانية.
عندما قمت بحل هذه المشكلة للتو ، ما زلت لا أعرف لماذا يمكن حلها تحت Firefox. إذا كان أي إله عظيم يعلم ، سأترك رسالة للسماح للطلاب الراحلين بتعلمها ، فأنا ممتن للغاية!