2017-11-19 9 views
-1

単一のテキストボックスに対してJavaScript keyup()イベントを使用しています。ユーザーがテキストフィールドをクリアしたときに、Javaスクリプトのkeyup()ハンドラを遅延させる方法

誰かの種類の「Windows」ならば、それはすべてのkeyUpイベントのためのHTTPリクエストを送信します:

を「W」、「のWi」、「勝つ」、「風」を、「Windo」、「ウィンドウ」 、 "Windows"

これは望ましい動作です。

ユーザーが空のテキストボックスをクリアすると、エラーが発生します。

これは望ましくない動作です。

質問

私は、テキストボックスがクリアされたときに送信されるHTTPリクエストをどのように停止することができますか?

+1

はあなたを表示コード。ユーザーのテキストの長さを確認してから検索を開始できます –

答えて

0

要求

function getResult(elem) { 
 

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

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

 
    console.log('No values') 
 
    } 
 

 

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

0

を行う前に、サーバーに情報を送信(およびそのことについての情報を得る)ためにAJAXを使用することができますvalueを確認してください:

<?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> 
関連する問題