วันนี้ฉันพบปัญหาที่ยากมาก เมื่อฉันทำการตรวจสอบกล่องอินพุตบางอย่างตรรกะทางธุรกิจของโครงการของฉันคือเมื่อฉันเลือกตัวเลือกเฉพาะของ SELECT กล่องอินพุตจะปรากฏขึ้นเพื่อให้ผู้ใช้ป้อนสิ่งต่างๆ อย่างไรก็ตามหากผู้ใช้ไม่ทำอะไรเลยกล่องเตือนจะต้องปรากฏขึ้นเพื่อให้ผู้ใช้ป้อนข้อมูล หลังจากอินพุตฉันจะซ่อนอินพุต
ดังนั้นปัญหาต่อไปนี้จึงเกิดขึ้น เมื่อกล่องป้อนอินพุตปรากฏขึ้นโฟกัสจะต้องได้รับโดยอัตโนมัติ ในเวลานี้ฉันใช้มัน
การคัดลอกรหัสมีดังนี้:
document.getElementById ('id'). focus ();
ฉันลองแล้วมันทำงานได้ดีมาก ฉันอดไม่ได้ที่จะรู้สึกมีความสุขและทำเสร็จแล้ว!
แต่การคำนวณไม่ดีเท่าการคำนวณของมนุษย์ เมื่อฉันทดสอบกับ Firefox มันจบลงแล้ว มันใช้งานง่ายเมื่อฉันแสดงอินพุตครั้งแรก แต่เมื่อฉันปิดกล่องแจ้งเตือนการแจ้งเตือนอินพุตไม่สามารถโฟกัสได้!
ปัญหานั้นยุ่งยากและฉันไม่รู้ว่าทำไม ดังนั้นฉันตรวจสอบคำตอบของอาจารย์บนอินเทอร์เน็ตพบเคล็ดลับต่อไปนี้และลองและมันก็มีประโยชน์จริงๆ!
หลังจากแจ้งเตือนต้นฉบับ
การคัดลอกรหัสมีดังนี้:
document.getElementByIdx ('id'). focus ();
เปลี่ยน
การคัดลอกรหัสมีดังนี้:
window.settimeout (function () {document.getElementById ('id'). focus ();}, 0);
ดีแก้ไขปัญหา!
Settimeout หมายถึงการดำเนินการของนิพจน์ก่อนหน้าหลังจากล่าช้าเวลาที่กำหนดหลังจากโหลด แน่นอนนี่คือการดำเนินการของฟังก์ชั่นหลังจากล่าช้า 0ms
เมื่อฉันเพิ่งแก้ไขปัญหานี้ฉันยังไม่รู้ว่าทำไมมันถึงสามารถแก้ไขได้ภายใต้ Firefox หากพระเจ้าผู้ยิ่งใหญ่รู้ว่าฉันจะฝากข้อความไว้เพื่อให้นักเรียนสายเรียนรู้ฉันรู้สึกขอบคุณมาก!