2016-08-22 29 views
0

PHP/JavaScript的 - 在字符串最後一個字符不會被移除

<form action='' method='post'> 
 
<input type='text' name='username' onkeyup='findUsers(this.value)'> 
 
<input type='submit' value='Add Member'> 
 
<div id='livesearch'></div>

<script> 
 
\t function findUsers(str) { 
 
\t \t if (str == "") { 
 
\t \t \t return; 
 
\t \t } else { 
 
\t \t \t if (window.XMLHttpRequest) { 
 
\t \t \t \t // code for IE7+, Firefox, Chrome, Opera, Safari 
 
\t \t \t \t xmlhttp = new XMLHttpRequest(); 
 
\t \t \t } else { 
 
\t \t \t \t // code for IE6, IE5 
 
\t \t \t \t xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
 
\t \t \t } 
 
\t \t \t xmlhttp.onreadystatechange = function() { 
 
\t \t \t \t if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
 
\t \t \t \t \t document.getElementById("livesearch").innerHTML = xmlhttp.responseText; 
 
\t \t \t \t } 
 
\t \t \t }; 
 
\t \t \t xmlhttp.open("GET","/classes/livemembersearch.php?q="+str,true); 
 
\t \t \t xmlhttp.send(); 
 
\t \t } 
 
\t } 
 
</script>

$q = $_GET["q"];

當越來越i的值在findUsers函數中,一切正常,除非當我清空文本字段時,在我清空字段之前它會一直顯示最後一個值。

例子:

  1. 我鍵入「FFFF」,它更新,我去掉一個F在一個時間,讓 更新,直到我刪除最近的f,並得到一個空場,它只是 不斷顯示f通過的值。
  2. 我輸入「hello」,它會更新,當我一次刪除整個字符串時, 通過的值保持爲hello。

我覺得該函數只是在字段爲空時才被調用。

我該如何解決這個問題?在函數中

+1

你能後是應該清空文本框,請功能? – NoobishPro

回答

0

幽州:

if (str == "") { 
      return; 
     } 

這意味着該功能將不完整的,你提出的問題確實會發生。我假設你正在清空livesearch元素? 由於在else語句中找到document.getElementById("livesearch").innerHTML = xmlhttp.responseText;,因此它將永遠不會執行。 那麼就應該是這樣的:

if (str == "") { 
    document.getElementById("livesearch").innerHTML = ""; 
} 

而留下其餘不變。 因此,當str爲空時,您將其清空,但在進行ajax調用時填充它。

p.s. if語句中的return;語句是多餘的。由於if語句爲真,其他語句不會以任何方式執行。

編輯:另請注意,onkeyup可能不會觸發某人複製文本而不是鍵入它。儘管用戶名不太可能,但爲了以防萬一,我認爲讓你知道這件事是件好事。 - 確實可以抓住這個的是oninput函數。

更多信息here

+0

Thx !!忽略了,第一次使用javascript。 你會建議使用什麼來代替onkeyup? –

+0

'oninput' =)如果我的回答是令您滿意的,請不要忘記接受它,以便人們知道此事已被關閉:) – NoobishPro

相關問題