คำตอบบางส่วนที่นี่แนะนำให้ใช้setTimeout
เพื่อชะลอกระบวนการโฟกัสที่องค์ประกอบเป้าหมาย หนึ่งในนั้นกล่าวว่าเป้าหมายนั้นอยู่ในกล่องโต้ตอบโมดอล ฉันไม่สามารถแสดงความคิดเห็นเพิ่มเติมเกี่ยวกับความถูกต้องของการsetTimeout
แก้ปัญหาโดยไม่ทราบรายละเอียดที่เฉพาะเจาะจงของการใช้งาน อย่างไรก็ตามฉันคิดว่าฉันควรให้คำตอบที่นี่เพื่อช่วยคนที่ทำงานในหัวข้อนี้เช่นเดียวกับฉัน
ความจริงของเรื่องก็คือว่าคุณไม่สามารถมุ่งเน้นไปที่องค์ประกอบซึ่งยังไม่เป็นที่มองเห็น หากคุณพบปัญหานี้ให้แน่ใจว่าสามารถมองเห็นเป้าหมายได้จริงเมื่อมีการพยายามโฟกัส ในกรณีของฉันเองฉันกำลังทำบางสิ่งตามบรรทัด
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();
สิ่งนี้ไม่ได้ผล ฉันรู้เพียงสิ่งที่เกิดขึ้นเมื่อผมดำเนินการ $ ( '# elementid'). โฟกัส () `จากคอนโซลที่ไม่ได้ทำงาน ความแตกต่าง - ในรหัสของฉันสูงกว่าเป้าหมายไม่มีความมั่นใจว่าเป้าหมายจะ Infact สามารถมองเห็นได้ตั้งแต่การเคลื่อนไหวอาจจะไม่สมบูรณ์ และมีร่องรอยอยู่
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}
ทำงานได้ตามที่คาดไว้ ในตอนแรกฉันก็มีsetTimeout
วิธีแก้ปัญหาเช่นกันและก็ใช้ได้เช่นกัน อย่างไรก็ตามการหมดเวลาที่เลือกโดยพลการถูกผูกไว้เพื่อหยุดการแก้ปัญหาไม่ช้าก็เร็วขึ้นอยู่กับความช้าของอุปกรณ์โฮสต์ที่จะดำเนินการเกี่ยวกับกระบวนการเพื่อให้แน่ใจว่าองค์ประกอบเป้าหมายจะมองเห็นได้