2017-11-19 21 views
-1

단일 텍스트 상자에 대해 JavaScript keyup() 이벤트를 사용하고 있습니다.사용자가 텍스트 필드를 지울 때 자바 스크립트 keyup() 처리기를 지연시키는 방법

사람 유형 "윈도우", 그것은 모든의 keyup에 대한 HTTP 요청을 보낼 경우 :

"W", "무선", "승리", "바람", "진열창", "창"을 , "Windows"

이것은 바람직한 동작입니다.

사용자가 빈 텍스트 상자를 지우면 오류가 발생합니다.

이것은 바람직하지 않은 동작입니다. 텍스트의 선택을 취소하면

질문

가 어떻게 HTTP 요청을 중지 할 수는 전송되는?

+1

보여 당신의 암호. 사용자의 텍스트 길이를 확인한 다음 검색을 시작할 수 있습니다. –

답변

0

확인 value 요청을하기 전에

function getResult(elem) { 
 

 
    if (elem.value !== '') { 
 

 
    console.log('Have values') 
 
    } else { 
 

 
    console.log('No values') 
 
    } 
 

 

 
}
<input type="text" onkeyup="getResult(this)">

0
당신은 서버에 정보를 전송하는 (그리고 그 문제에 대한 정보를 얻을 수)에 AJAX를 사용할 수

:

<?php 

if (isset($_POST['search'])) { 
    echo json_encode($_POST); 
    die(); 
} 

?> 

<form> 
    <input id="search" type="text" name="search" /> 
</form> 

<script> 

document.getElementById("search").addEventListener('keyup', function (e) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "#", true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === XMLHttpRequest.DONE) { 
     if (xhr.readyState == 4 && xhr.status == 200) { 
     object = JSON.parse(xhr.responseText); 
     console.log(object); 
     } 
    } 
    } 
    xhr.send("search=" + this.value); 
}); 

</script>