0

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

这是更新 div 的 jquery 脚本,它由输入(带有 id:searchbar)的 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 内

4

1 回答 1

0

我找到了答案,我几乎可以肯定这与我的 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;
        }
      }
    );
  }
}
于 2012-07-24T15:21:13.617 回答