키 누르기 이벤트 후 jquery .val ()을 어떻게 얻을 수 있습니까?
나는 얻었다 :
$(someTextInputField).keypress(function() {
alert($(this).val());
});
이제 경고는 항상 키를 누르기 전에 값을 반환합니다 (예 : 필드가 비어 있고 'a'를 입력하고 경고가 ''를 제공합니다. 그런 다음 'b'를 입력하면 경고가 'a'를 제공합니다 ...). 하지만 키를 누른 후 값을 원합니다. 어떻게해야합니까?
배경 : 텍스트 필드에 하나 이상의 문자가 포함되는 즉시 버튼을 활성화하고 싶습니다. 따라서 모든 키 누르기 이벤트에서이 테스트를 실행하지만 반환 된 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
키 누르기 대신 keyup을 사용하십시오 .
또는 시간 제한이 0 인 keydown 이벤트를 사용할 수 있습니다.
이렇게하면 사용자가 키를 누르는 것을 중지 할 때 적용되는 대신 변경 사항이 즉시 적용됩니다.
$(someTextInputField).on("keydown", function() {
setTimeout(function($elem){
alert($elem.val());
}, 0, $(this));
});
onchange
키 이벤트를 사용하는 대신 이벤트 핸들러 를 연결할 수 있습니다 .
$(someTextInputField).change(function() {
alert($(this).val());
});
사용 Edit > Paste
하거나 마우스 오른쪽 단추로 클릭 한 변경 이벤트가 발생합니다 붙여 넣기 한 후하지만 키 이벤트. 참고 일부 붙여 넣기에 키 이벤트를 시뮬레이션 할 수 있습니다 브라우저 (내가 어떤 알고하지 않습니다하지만)하지만 당신은 할 수없는 의지 하는 행동.
다음과 같이 시도하십시오.
$('#someField').keypress(function() {
setTimeout(function() {
if ($('#someField').val().length > 0)
$('#theButton').attr('disabled', false);
}, 1);
});
이는 단순히 시간 제한을 도입하여 "keypress"이벤트 루프가 완료된 후 코드가 거의 즉시 실행되도록합니다. 이러한 짧은 타이머 간격 (브라우저에서 반올림하더라도)은 눈에 띄지 않습니다.
편집 — 또는 다른 사람들이 말하는 것처럼 "keyup"을 사용할 수 있지만 그 의미는 다릅니다.
참고 URL : https://stackoverflow.com/questions/3063434/how-can-i-get-jquery-val-after-keypress-event
'Programming' 카테고리의 다른 글
iPhone 6 / iOS 8로 NFC 태그 읽기 (0) | 2020.08.24 |
---|---|
JavaScript for 루프로 json을 만드는 방법은 무엇입니까? (0) | 2020.08.24 |
디렉토리와 하위 디렉토리에서 가장 큰 파일을 찾는 방법은 무엇입니까? (0) | 2020.08.24 |
새 Gradle 프로젝트 가져 오기 실패 : 빌드 도구 수정 버전 * .0.0을 찾지 못했습니다. (0) | 2020.08.24 |
jQuery, 간단한 폴링 예제 (0) | 2020.08.24 |