1
브라우저 간 Javascript에서 텍스트를 드래그하여 필드에 끌어다 놓음으로써 <input>
요소의 값이 변경된 후 이벤트를받는 방법은 무엇입니까?입력 요소에 값 변경 이벤트 가져 오기
input.addEventListener("change", cb); // Is not triggered on drop
input.addEventListener("drop", cb); // Is triggered before the value change
문제를 보여주기 위해 미리보기 :
let input = document.getElementById('input');
let button = document.getElementById('button');
let div = document.getElementById('div');
function log(msg) {
\t let el = document.createElement('pre');
\t el.textContent = msg;
\t div.appendChild(el);
}
input.addEventListener("change", function() {
\t log("CHANGE: " + input.value);
});
input.addEventListener("keyup", function() {
\t log("KEYUP: " + input.value);
});
input.addEventListener("drop", function() {
\t log("DROP: " + input.value);
});
button.addEventListener("click", function() {
\t log("CLICK: " + input.value);
});
log("Try dragging text into the input field");
<input id="input"></input>
<button id="button">Click</button>
<div id="div"></div>
Chrome에서 적어도 작동하는 하나의 해결 방법을 발견했습니다. 값을 읽기 전에 'setTimeout (cb, 0)'on * drop *을 실행하십시오. – ANisus
setTimeout을 사용하여 해결 방법을 시도했지만 Firefox에서도 작동합니다. –