ค้นหาเว็บไซต์

angularjs - ปิดการใช้งานปุ่ม Enter บน Twitter Typeahead?


เป็นไปได้หรือไม่ที่จะปิดการกดปุ่ม Enter บนองค์ประกอบในเมนูแบบเลื่อนลงใน Twitter Typeahead? ผมกำลังใช้ Angular กับ Typescript.

ฉันได้พยายามใช้ preventDefault() เมื่อ event.keycode === 13 บน ng-keydown ในช่องป้อนข้อมูล typeahead แล้ว ng-keydown จะตรวจจับการกดปุ่ม enter ได้ แต่ไม่มีวิธีหยุด typeahead จากการเลือกองค์ประกอบนั้น

ฉันจำเป็นต้องปิดการฟัง typeahead เมื่อกด Enter หรืออะไรบางอย่างไหม?

คำตอบ #1

คุณได้ลองใช้กับองค์ประกอบ input หรือองค์ประกอบ form หรือยัง?

สำหรับฉัน มันใช้ได้เมื่อฉันรัน:

$ ('form').on('submit', function(e) {event.preventDefault();}); แต่อย่างไรก็ตามฉันแนะนำให้ใช้ตัวเลือกที่เฉพาะเจาะจงมากขึ้น ;)

หรือคุณสามารถทำมันบนฟิลด์ input แต่คุณจำเป็นต้องป้องกันการแพร่กระจายของอีเวนต์ preventDefault จะป้องกันเพียงพฤติกรรมปกติของอีเวนต์เท่านั้น - ในกรณีของ input คือการอัปเดตค่าของมัน สิ่งที่คุณต้องการทำคือหยุดการส่งฟอร์ม ดังนั้นคุณจำเป็นต้องหยุดการแพร่กระจายของอีเวนต์

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

$('#demo-input').on('keydown', function(e) {
    if (e.keyCode === 13) {
        return false
    }
});

เมื่อใช้ jQuery การใช้ return false ในตัวจัดการเหตุการณ์มีผลเหมือนกับการเรียก e.preventDefault() และ e.stopPropagation().