텍스트 상자 외부에서 클릭 할 때까지 텍스트 상자의 jQuery 변경 이벤트가 시작되지 않는다는 것을 알았습니다.
HTML :
<input type="text" id="textbox" />
JS :
$("#textbox").change(function() {alert("Change detected!");});
JSFiddle 데모 보기
내 응용 프로그램은 텍스트 상자의 모든 문자 변경시 이벤트를 시작해야합니다. 대신 키업을 사용해 보았습니다 …
$("#textbox").keyup(function() {alert("Keyup detected!");});
… 키업 이벤트가 마우스 오른쪽 버튼으로 클릭하여 붙여 넣기로 시작되지 않는다는 것은 알려진 사실입니다.
해결 방법이 있습니까? 두 청취자 모두에게 문제가 있습니까?
답변
두 가지 이벤트에 바인딩하는 것이 일반적인 방법입니다. 붙여 넣기 이벤트에 바인딩 할 수도 있습니다.
다음과 같이 여러 이벤트에 바인딩 할 수 있습니다.
$("#textbox").on('change keyup paste', function() {
console.log('I am pretty sure the text box changed');
});
당신이 그것에 대해 pedantic하고 싶다면, 당신은 또한 텍스트를 드래그하기 위해 마우스 업에 바인딩 lastValue
하고 텍스트가 실제로 변경되었는지 확인 하는 변수를 추가 해야합니다 :
var lastValue = '';
$("#textbox").on('change keyup paste mouseup', function() {
if ($(this).val() != lastValue) {
lastValue = $(this).val();
console.log('The text box really changed this time');
}
});
그리고 super duper
pedantic 하고 싶다면 자동 채우기, 플러그인 등을 제공하기 위해 간격 타이머를 사용해야합니다.
var lastValue = '';
setInterval(function() {
if ($("#textbox").val() != lastValue) {
lastValue = $("#textbox").val();
console.log('I am definitely sure the text box realy realy changed this time');
}
}, 500);
답변
최신 브라우저에, 당신은 사용할 수 있습니다 이벤트를 :input
$("#textbox").on('input',function() {alert("Change detected!");});
답변
$(this).bind('input propertychange', function() {
//your code here
});
이것은 입력, 붙여 넣기, 마우스 오른쪽 클릭 등의 작업에 사용됩니다.
답변
if you write anything in your textbox, the event gets fired.
code as follows :
HTML :
<input type="text" id="textbox" />
JS :
<script type="text/javascript">
$(function () {
$("#textbox").bind('input', function() {
alert("letter entered");
});
});
</script>
답변
답변
아래 코드를 사용해보십시오 :
$("#textbox").on('change keypress paste', function() {
console.log("Handler for .keypress() called.");
});
답변
당신의 의견을 읽으면 더러워졌습니다. 이것은 올바른 방법은 아니지만 해결 방법이 될 수 있습니다.
$(function() {
$( "#inputFieldId" ).autocomplete({
source: function( event, ui ) {
alert("do your functions here");
return false;
}
});
});