เหตุการณ์ใดที่ <input type =“ number” /> เริ่มทำงานเมื่อมีการเปลี่ยนแปลงค่า


95

แค่สงสัยว่ามีใครรู้บ้างไหมว่าเหตุการณ์ใดที่<input type="number" />องค์ประกอบHTML5 เริ่มทำงานเมื่อคลิกลูกศรขึ้น / ลง:

ตัวอย่างการป้อนหมายเลข

ฉันใช้onblurสำหรับเมื่อโฟกัสออกจากช่องป้อนข้อมูลแล้ว


นี่น่าจะเป็นบั๊กของ chrome stackoverflow.com/questions/44978087/…
Oriol Jiménez

คำตอบ:


75

change จะเป็นเหตุการณ์ที่เริ่มทำงานเมื่อค่าของฟิลด์เปลี่ยนไป

ฉันคิดว่าเหตุการณ์ HTML5 inputก็จะเริ่มขึ้นเช่นกัน


37
เพียง แต่oninputจะเกิดขึ้นเมื่อ 'ขึ้น' และ 'ลง' ลูกศรมีการคลิก
1.1

2
แต่เปลี่ยนเฉพาะไฟที่เบลออย่างน้อยที่สุดใน firefox ฉันเดาว่าเราจะต้องมองหาการกดปุ่ม
andho

onchange และ oninput ทั้งสองทำงานใน Opera แต่ oninput เท่านั้นที่จะทำงานใน Chrome (และต่อเมื่อฉันส่งคืนเท็จจากตัวจัดการเหตุการณ์ - มิฉะนั้น Chrome จะยิงเหตุการณ์ oninput ซ้ำ ๆ )
Ian Oxley

2
changeไม่เริ่มทำงานเมื่อพิมพ์ค่าเฉพาะเมื่อมีการคลิกปุ่มเท่านั้น (อย่างน้อยใน Firefox)
Timmmm

5
inputเป็นเหมือนการหลอมรวมระหว่างkeyup change
Thanh Trung

37

ฉันพบว่าสำหรับ jQuery รหัสต่อไปนี้ครอบคลุมการป้อนข้อมูลแป้นพิมพ์การเปลี่ยนแปลงเมาส์วีลและการคลิกปุ่มใน Chrome และยังจัดการการป้อนข้อมูลแป้นพิมพ์ใน Firefox

$("input[type=number]").bind('keyup input', function(){
    // handle event
});

2
เพิ่ม 'การเปลี่ยนแปลง' เข้าไปด้วยและมันก็สมบูรณ์แบบ คุณจะยังคงต้องการรับฟังการเปลี่ยนแปลงภายนอกด้วยและไม่มีอันตรายใด ๆ ในการเพิ่มมันต่อไป
Matt Fletcher

และ 'mousewheel' ด้วยหากคุณต้องการรับเหตุการณ์เลื่อนภายในช่องป้อนข้อมูล
Matt Fletcher

4
โปรดทราบว่า.bind()ตอนนี้เลิกใช้แล้ว.on()
Michael Hays

7

ฉันพบว่าonkeyupและonchangeครอบคลุมทุกอย่างใน Chrome 19 สิ่งนี้จัดการกับการป้อนค่าโดยตรงกดแป้นลูกศรขึ้นลงคลิกปุ่มและเลื่อนเมาส์วีล

onchangeเพียงอย่างเดียวก็เพียงพอแล้วใน Chrome แต่เบราว์เซอร์อื่น ๆ ที่แสดงผลเฉพาะฟิลด์เป็นกล่องข้อความเท่านั้นที่ต้องการการonkeyupเชื่อมโยงซึ่งทำงานได้อย่างสมบูรณ์เพื่ออ่านค่าใหม่

การผูกmousewheelเหตุการณ์แยกกันประสบความสำเร็จน้อย เหตุการณ์เริ่มทำงานเร็วเกินไป - ก่อนที่จะอัปเดตค่าฟิลด์ - ดังนั้นจึงให้ค่าก่อนหน้าของฟิลด์เสมอ


นี่เป็นเรื่องจริงสำหรับ Firefox
barfuin

5

onchangeเหตุการณ์ fires บนเบลอ แต่oninputเหตุการณ์ fires ขณะที่คุณพิมพ์ บางทีคุณอาจต้องการตั้งเวลาให้กับoninputเหตุการณ์และเริ่มการทำงานของคุณonchangeเมื่อผู้ใช้หยุดพิมพ์สักครู่?


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