วิธีลบโฟกัสจากช่องป้อนข้อมูลใน jQuery


139

ฉันกำลังตั้งค่าโฟกัสที่ช่องป้อนข้อมูลบางช่องเมื่อโหลดหน้าโดยใช้บรรทัดต่อไปนี้:

$('#myInputID').focus();

มีวิธีที่ฉันสามารถเลิกทำหรือลบโฟกัสนี้เมื่อวางเมาส์เหนือองค์ประกอบบางอย่างได้หรือไม่? (ไม่จำเป็นต้องรีเซ็ตโฟกัสหลังจากออกจากองค์ประกอบนี้)

ฉันไม่พบฟังก์ชันที่ตรงข้ามกับข้างบนใน jQuery หรือจะใช้งานได้ที่นี่

คำตอบ:


232

ใช้.blur ()

เหตุการณ์เบลอจะถูกส่งไปยังองค์ประกอบเมื่อสูญเสียโฟกัส <input>แต่เดิมเหตุการณ์นี้เป็นเพียงรูปแบบที่ใช้บังคับกับองค์ประกอบเช่น ในเบราว์เซอร์ล่าสุดโดเมนของเหตุการณ์ได้รับการขยายเพื่อรวมประเภทองค์ประกอบทั้งหมด องค์ประกอบอาจสูญเสียโฟกัสผ่านคำสั่งแป้นพิมพ์เช่นแป้น Tab หรือโดยการคลิกเมาส์ที่อื่นในหน้า

$("#myInputID").blur(); 

โอเคฉันคิดว่าฉันทำอะไรผิดที่นี่หรือฉันอธิบายผิด องค์ประกอบที่ฉันต้องการใช้ที่นี่มี class navbar (เป็นแถบนำทาง Bootstrap 3) ดังนั้นฉันจึงลองทำสิ่งต่อไปนี้ แต่ไม่ได้ผล: $ ('. navbar'). on ('mouseover', function () {$ ( '#myInputID'). เบลอ ();});
user2571510

ใช่ฉันทำอย่างนั้น หากไม่ได้ผลฉันจะตั้งโฟกัสที่แถบนำทางแทนได้ไหม
user2571510

1
@ user2571510: ลองแจ้งเตือนภายในเหตุการณ์และดูว่าจะถูกไล่ออกหรือไม่
Milind Anantwar

ใช่การแจ้งเตือนจะแสดงขึ้น แต่ไม่ได้ลบโฟกัสออกจากฟิลด์
user2571510

2
@ user2571510: คุณมีรหัสซ้ำในหน้าหรือไม่ ?? ลองใช้$("[id=myInputID]").blur();
Milind Anantwar



0

$(':text').attr("disabled", "disabled");ตั้งค่ากล่องข้อความทั้งหมดเป็นโหมดปิดใช้งาน คุณสามารถทำได้อีกวิธีหนึ่งเช่นการให้รหัสกล่องข้อความแต่ละรายการ โดยการทำน้ำหนักรหัสนี้จะมากขึ้นและปัญหาประสิทธิภาพจะอยู่ที่นั่น

ดังนั้นควรมี$(':text').attr("disabled", "disabled");แนวทาง


0

หากคุณมีreadonlyแอตทริบิวต์การเบลอเองจะไม่ทำงาน การตัดกันด้านล่างควรได้ผล

$ ('# myInputID'). removeAttr ('readonly'). trigger ('เบลอ'). attr ('readonly', 'readonly');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.