programing

키 누르기 이벤트 후 jQuery.val() AFTER 이벤트를 받으려면 어떻게 해야 합니까?

instargram 2023. 9. 14. 21:39
반응형

키 누르기 이벤트 후 jQuery.val() AFTER 이벤트를 받으려면 어떻게 해야 합니까?

알 수 있습니다.

$(someTextInputField).keypress(function() {
  alert($(this).val());
});

이제 경보는 항상 다음의 값을 반환합니다.keypress(예: 필드가 비어 있고 'a'를 입력하면 알림이 '를 입력합니다.그런 다음 'b'를 입력하면 알림이 'a'를 표시합니다.하지만 나는 그 다음의 가치를 원합니다.keypress- 어떻게 해야하죠?

배경:텍스트 필드에 문자가 하나 이상 포함되면 바로 버튼을 활성화하고 싶습니다.그래서 이 테스트를 모든 사람들에게 실행합니다.keypress이벤트, 그러나 반환된 사용val()결과는 항상 한 발 늦습니다.사용.change()이벤트는 텍스트 상자를 떠날 때까지 버튼이 비활성화되어 있기 때문에 선택 사항이 아닙니다.그렇게 하는 더 좋은 방법이 있다면, 저는 그것을 듣게 되어 기쁩니다!

바꾸다keypress로.keyup:

$(someTextInputField).on("keyup", function() {
  alert($(this).val());
});

keypress키를 누르면 발사됩니다.keyup키가 해제되면 실행됩니다.

아무도 js "입력" 이벤트에 대해 언급하지 않아 놀랐습니다.

$(someTextInputField).on('input', function() {
  alert($(this).val());
});

권장된.

https://developer.mozilla.org/en-US/docs/Web/Events/input

키 누르기 대신 키 업을 사용합니다.

또는 키다운 이벤트를 시간 초과 0으로 사용할 수도 있습니다.

이렇게 하면 사용자가 키를 잡는 것을 멈출 때 적용되는 대신 변경 사항이 즉시 적용됩니다.

$(someTextInputField).on("keydown", function() {
  setTimeout(function($elem){
    alert($elem.val());
  }, 0, $(this));
});

다음과 같은 것을 시도해 보십시오.

$('#someField').keypress(function() {
  setTimeout(function() {
    if ($('#someField').val().length > 0)
      $('#theButton').attr('disabled', false);
  }, 1);
});

이는 단순히 "키 누르기" 이벤트 루프가 완료된 후 코드가 거의 즉시 실행되도록 시간 초과를 초래합니다.이렇게 짧은 타이머 간격(브라우저에 의해 반올림되더라도)은 눈에 띄지 않습니다.

edit - 또는 의미론은 다르지만 다른 모든 사람들이 말하는 것처럼 "key up"을 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3063434/how-can-i-get-jquery-val-after-keypress-event

반응형