📅  最后修改于: 2023-12-03 15:24:56.671000             🧑  作者: Mango
在前端开发中,我们经常需要检测输入框的值是否被修改过。本文将介绍如何通过 JavaScript 检测输入框的值变化,并且在值变化时触发相应的事件。
onchange
事件是在输入框失去焦点后触发,但是它不会实时监测输入框的值变化。因此,如果你要检测输入框的值是否实时变化,此方法并不适用。
<input type="text" onchange="changeHandler()" />
oninput
事件是在输入框的值变化时实时触发,适合进行实时监测。
<input type="text" oninput="inputHandler()" />
MutationObserver
是一个可以观察 DOM 变化的对象,可以用来观察输入框的值变化。它可以更加细粒度地检测输入框的值变化,这个方法适用于使用框架的应用。
<div id="input-box"><input type="text"></div>
const targetNode = document.querySelector('#input-box');
const observer = new MutationObserver((mutationsList) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' && mutation.target.nodeName === 'INPUT') {
console.log('Input value changed:', mutation.target.value);
}
}
});
const config = { childList: true };
observer.observe(targetNode, config);
以上三种方法,onchange
适用于非实时监测的情况;oninput
适用于需要实时监测的情况;MutationObserver
适用于更加细粒度的监测,具备更强的灵活性。在开发过程中,需要根据实际情况选择合适的方法。