2016-08-22 62 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

相关问题