带有Ajax onkeypress的输入字段导致输入被删除

问题描述:

我在一个网站上有一个输入字段,我正在使用一个链接到它的jquery ajax脚本。每次按下某个键时,ajax脚本都会搜索与输入字段的值匹配的字符串,如果找到该字符串,脚本会更新页面上的div并将输入字段的值设置为空,以便用户有一个新的空间来键入一个新的字符串。但是,如果用户键入第一个字符串并且脚本使用响应数据更新div并清除输入字段值,则用户不必等待片刻就可以再次开始输入,而是键入到字段中的任何文本(在接下来的两秒钟左右)被删除后,他们键入它。我只是想停止他们的文本被删除,如果他们要键入一个新的字符串,在第一个验证后不久,带有Ajax onkeypress的输入字段导致输入被删除

这里是jquery脚本,更新的股利,这是由输入解雇(ID为:搜索栏)的onkeypress事件事件:

function search(status){ 
    if($("#searchbar").val().length > 1){ 
    $.get("http://www.website.com/subfolders/some_php_script.php", 
     {l: status, q:$("#searchbar").val()}, 
     function(data){ 
     $("#div-to-update").html(data); 
     } 
    ); 
    } 
} 

编辑:#searchbar是不是得到更新

的DIV中
+0

您可以用'keyup',而不是'keypress' 。 – undefined 2012-07-24 14:41:44

+0

搜索栏是否在div-to-update? – 2012-07-24 14:46:24

+0

''.unbind()'当你传递数据的引用到服务器时的keyup函数,在HTML更新后重新'绑定()'keyup函数。 – Ohgodwhy 2012-07-24 14:46:45

我已经找到了答案,我几乎可以肯定它与我的Ajax可能射击太多次做{有人可以确认这是否是连一个真正的问题?}

我设置一个布尔值变量作为决定是否不是字符串已经被发现了,如果是这样的话那么什么都得到更新,这里是固定码的控制:

var found = false; //initialized 

function search(status){ 
    if($("#searchbar").val().length > 1){ 
    $.get("http://www.website.com/subfolders/some_php_script.php", 
     {l: status, q:$("#searchbar").val()}, 
     function(data){ 
     if(!found){ 
      $("#div-to-update").html(data); 
      found = true; 
     } 
     } 
    ); 
    } 
}