คุณจะเปิดใช้งานฟังก์ชันปิดคีย์ Escape ในโมดอล Bootstrap ของ Twitter ได้อย่างไร


132

ฉันทำตามคำแนะนำสำหรับโมดอล Twitter Bootstrap ในหน้าเอกสารหลัก
และใช้data-keyboard="true"ไวยากรณ์ที่กล่าวถึง แต่ปุ่ม Escape ไม่ได้ปิดหน้าต่างโมดอล
มีอย่างอื่นที่ฉันขาดหายไปหรือไม่?

รหัส:

<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal'>
  <div class='modal-body'>
    <div>Test</div>
  </div>
</div>

2
สิ่งนี้ถูกเปิดใช้งานโดยค่าเริ่มต้น
Adam F

คำตอบ:


304

ดูเหมือนว่านี่จะเป็นปัญหาเกี่ยวกับวิธีการผูกเหตุการณ์คีย์อัพ

คุณสามารถเพิ่มtabindexแอตทริบิวต์ให้กับโมดอลเพื่อแก้ไขปัญหานี้:

tabindex="-1"

ดังนั้นโค้ดทั้งหมดของคุณควรมีลักษณะดังนี้:

<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal' tabindex='-1'>
    <div class='modal-body'>
    <div>Test</div>
    </div>
</div>

สำหรับข้อมูลเพิ่มเติมคุณสามารถดูการสนทนาเกี่ยวกับปัญหานี้ได้ที่ github

(อัปเดตลิงก์ไปยังที่เก็บ TWBS ใหม่)


3
แม้ว่าสิ่งนี้จะป้องกันไม่ให้โฟกัสอัตโนมัติจากช่องป้อนข้อมูล
เปลือย

3
คุณยังสามารถเพิ่มแอตทริบิวต์ data-keyboard ต่อท้าย div.modal ของคุณ (และเว้นไว้ในผู้โทร) หากคุณเรียกใช้กล่องโต้ตอบจากหลาย ๆ ที่
Vitalik Verhovodov

2
ดังที่ @nrek ชี้ให้เห็นด้านล่าง - ปิดด้วยการหลบหนีเป็นจริงตามค่าเริ่มต้นดังนั้นคุณจึงไม่จำเป็นต้องใช้อย่างเคร่งครัดdata-keyboard="true"- มันtabindex="-1"ทำให้เกิดพฤติกรรม
ลีโอ

ฉันสามารถยืนยันได้ว่าโซลูชันนี้ใช้ได้ใน Bootstrap 4 ฉันไม่รู้ว่าเหตุใดจึงไม่ทำงานตามค่าเริ่มต้นตามที่เอกสารกล่าว
Binar Web

นอกจากนี้ยังdata-keyboardอยู่ในองค์ประกอบของกิริยาไม่ใช่ตัวควบคุม falseนี้สามารถทดสอบโดยการตั้งค่าให้
WoodrowShigeru

24

นอกจากนี้หากคุณเรียกใช้ผ่าน javascript ให้ใช้สิ่งนี้:

$('#myModal').modal({keyboard: true}) 

15
สิ่งนี้เคยเป็นสิ่งเดียวที่คุณต้องทำ แต่ตอนนี้คุณต้องตรวจสอบให้แน่ใจด้วยว่า div ของคุณมีแอตทริบิวต์ "tabindex =" - 1 ""
Bala Clark

1
ฉันต้องตั้งค่าดัชนีแท็บเท่านั้น
weltschmerz

@dchacke นั่นเป็นเพราะคุณสมบัติของคีย์บอร์ดเป็นค่าเริ่มต้นเป็นจริง! ดังนั้นเพียงตั้งค่า tabindex = '- 1'
nrek


3

ในเชิงมุมฉันใช้สิ่งนี้:

var modalInstance = $modal.open({                        
 keyboard: false,
 backdrop: 'static',
 templateUrl: 'app/dashboard/view/currentlyIneligibleView.html',
 controller: 'currentlyIneligibleCtrl',
 resolve: {
     data: function () { return param; }
    }
});
  • ฉากหลัง: 'static' => หยุดเพื่อปิดเมื่อคลิกด้านนอก
  • แป้นพิมพ์: false => หยุดเพื่อปิดโดยใช้ Escape buttton

-1

Bootstrap 3

ใน HTML ให้ตั้งค่าdata-backdropเป็นแบบคงที่และdata-keyboardเป็นเท็จ

ตัวอย่าง:

<button type="button" data-toggle="modal" data-target="#myModal" data-backdrop="static" data-keyboard="false">Launch modal</button>

หรือ

$('#myModal').modal({
  backdrop: 'static',
  keyboard: false
}) 

ทดสอบสด:

https://jsfiddle.net/sztx8qtz/

เรียนรู้เพิ่มเติม: http://budiirawan.com/prevent-bootstrap-modal-closing/


ตัวอย่างของคุณไม่ได้เปิดใช้งาน Escape Key
Binar Web
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.