سؤال

أحاول إنشاء قسم، والذي عند النقر فوقه يتحول إلى مربع إدخال، ويركز عليه.أنا أستخدم النموذج الأولي لتحقيق ذلك.يعمل هذا في كل من Chrome وFirefox، ولكن ليس في IE.يرفض IE التركيز على حقل الإدخال المُضاف حديثًا، حتى لو قمت بتعيين مهلة مدتها ثانية واحدة.

يعمل الكود بشكل أساسي على النحو التالي:

var viewElement = new Element("div").update("text");
var editElement = new Element("input", {"type":"text"});
root.update(viewElement);

// pseudo shortcut for the sake of information:
viewElementOnClick = function(event) {
    root.update(editElement);
    editElement.focus();
}

المثال أعلاه هو نسخة مختصرة من الكود الفعلي، الكود الفعلي يعمل بشكل جيد باستثناء بت التركيز في IE.

هل هناك قيود على وظيفة التركيز في IE؟هل أحتاج إلى وضع الإدخال في النموذج؟

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

المحلول

أعتقد أن IE لم يقم بتحديث DOM حتى الآن عند إجراء الاتصال بالتركيز ().في بعض الأحيان تنتظر المتصفحات حتى انتهاء تنفيذ البرنامج النصي قبل تحديث DOM.

سأحاول القيام بالتحديث، ثم القيام به

setTimeout("setFocus", 0);

function setFocus()
{
    editElement.focus();
}

سيكون خيارك الآخر هو وجود كلا العنصرين في DOM في جميع الأوقات ومجرد تبديل style.display عليهما اعتمادًا على ما تريد إخفاؤه/إظهاره في وقت معين.

نصائح أخرى

ما هو الإصدار آي إي؟ما الذي تم ضبط DocType عليه؟هل هو وضع صارم أم معايير أم مراوغات؟هل تظهر أي أخطاء في جافا سكريبت (راجع شريط الحالة الموجود أسفل اليسار بحثًا عن علامة تحذير صفراء صغيرة)؟قم بتمكين الإعلان عن الأخطاء لجميع الأخطاء عبر الأدوات > الخيارات > خيارات متقدمة.

أويسين

تمت الإجابة على السؤال بالفعل بواسطة 17 من 26.أريد فقط أن أشير إلى أن النموذج الأولي لديه آلية أصلية لهذا: وظيفة. تأجيل ()

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