【问题标题】:Input field with Ajax onkeypress causing input to be deleted带有 Ajax onkeypress 的输入字段导致输入被删除
【发布时间】:2012-07-24 14:39:06
【问题描述】:

我正在使用链接到它的 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 内

【问题讨论】:

  • 你可以用keyup代替keypress
  • 搜索栏是否在 div-to-update 中?
  • .unbind()keyup函数当你将引用传递给服务器获取数据,在HTML更新后重新bind()keyup函数。
  • 当我使用任何 keyup/keydown/keypress 时它会这样做。到目前为止,我尝试解除绑定和重新绑定,但没有成功。

标签: jquery ajax string forms input


【解决方案1】:

我找到了答案,而且我几乎可以肯定这与我的 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;
        }
      }
    );
  }
}

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2016-07-15
    • 1970-01-01
    相关资源
    最近更新 更多