2012-02-10 16 views
0

は、私は私のライブサーチにこのスクリプトを書いた:jQueryのライブ検索スクリプトスパム

$(document).ready(function(){ 
    $('input#search').keypress(function(){ 
     $('ul#pacientes_hint').html(""); 
     var texto = $('input#search').val(); 

     if(texto.length > 2){ 
     $('ul#pacientes_hint').html(""); 
     $.post("../index.php/buscar/busca2", { "texto" : texto}, 
     function(data){ 
      $('ul#pacientes_hint').html(""); 
      var html_final = ""; 
      $.each(data, function(key, value) { 
       html_final = html_final + value.msg; 
      }); 
       $('ul#pacientes_hint').html(html_final); 
     }, "json"); 
     }else{ 
     $('ul#pacientes_hint').html(""); 
     } 
    }); 

}); 

それは大丈夫、すべての作業だが、私はそれがquerysをスパム速すぎて入力すると、どのように私はそれがこれだけ1つのスクリプトの実行(することができます最後のキー押下)は一度に実行されますか?

+0

可能重複。 com/questions/1319205/jquery-ajax-live-validation-timeout-question) –

+0

申し訳ありません重複している場合は、何を検索するのか分かりませんでした –

+0

問題はありません。 。 –

答えて

0

私は前のAJAXリクエストを完了する前に、それを強制終了する必要があると思います。これを試してみてください:

$(document).ready(function(){ 
    var xhr;//Declare a global variable 
    $('input#search').keypress(function(){ 
     $('ul#pacientes_hint').html(""); 
     var texto = $('input#search').val(); 

     if(texto.length > 2){ 

     xhr.abort();//Add this line 

     $('ul#pacientes_hint').html(""); 

     //store AJAX object in variable 
     xhr = $.post("../index.php/buscar/busca2", { "texto" : texto}, 
     function(data){ 
      $('ul#pacientes_hint').html(""); 
      var html_final = ""; 
      $.each(data, function(key, value) { 
       html_final = html_final + value.msg; 
      }); 
       $('ul#pacientes_hint').html(html_final); 
     }, "json"); 
     }else{ 
     $('ul#pacientes_hint').html(""); 
     } 
    }); 

}); 
関連する問題