source

jQuery 텍스트 상자 변경 이벤트는 텍스트 상자가 초점을 잃을 때까지 발생하지 않습니까?

ittop 2023. 9. 14. 23:34
반응형

jQuery 텍스트 상자 변경 이벤트는 텍스트 상자가 초점을 잃을 때까지 발생하지 않습니까?

텍스트 상자의 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');
});

만약 당신이 그것에 대해 현학적이기를 원한다면, 당신은 또한 텍스트를 끌어다 놓기 위해 마우스업에 바인딩해야 하고, 추가해야 합니다.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 duperpedantic 다음에는 인터벌 타이머를 사용하여 자동 채우기, 플러그인 등을 제공해야 합니다.

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);

최신 브라우저에서는 이벤트를 사용할 수 있습니다.

데모

$("#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").bind('paste',function() {alert("Change detected!");});

JSFiddle의 데모를 참조하십시오.

아래 코드를 사용해 보십시오.

$("#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;
        }
    });
});

언급URL : https://stackoverflow.com/questions/17317465/jquery-textbox-change-event-doesnt-fire-until-textbox-loses-focus

반응형