2010-12-01 5 views
2

私は(Googleのインスタントに類似)のautoSubmitフォームを記述しようとしています、そして今、私はそうするように、このスクリプトを使用しています:jQueryのフォームの自動提出

$(document).ready(function() { 
    $('#string').change(function(){ 
     var url = $(this).val(); 
     $('#area').load('cgi/test.pl',{string:url}); 
    }); 
}); 

さて、これで問題は、使用後にあり入力を終了すると、入力欄の外側をクリックする必要があります。私はchangeの代わりにonkeyupなどを使用しようとしましたが、それは最初は非常識な量のリクエストになります。そして、フィールドにテキストを貼り付けると動作しません。私はまた、スクリプトの組み合わせでjavascript setTimeoutを使用しようとしましたが、実際に動作させることができませんでした。

基本的には、ユーザーがまだ入力しているとき(送信のために何らかの種類の遅延が発生する)「検出」する自動送信スクリプトですが、テキストが入力フィールドに貼り付けられたときも検出できます。

お気軽にお寄せください。

答えて

1

「デバウンス」(例:http://benalman.com/code/projects/jquery-dotimeout/examples/debouncing/)を実装するのにdoTimeout pluginを使用します。

このようにして、keyupを使用できます。テキストを貼り付けるユーザーを考慮するには、changeハンドラーを使用してください。 changeが発生したときには、ハンドラを呼び出してください。

+0

このようなことを試してみてください。 –

1

なぜsetTimeoutは機能しませんでしたか?

$(document).ready(function() { 
    var currentTimeout = null; 

    $('#string').keyup(handler); 
    $('#string').change(handler); 

    var handler = function() {  
     if(currentTimeout != null) { 
      clearTimeout(currentTimeout); 
     } 

     currentTimeout = setTimeout(function() { 
      var url = $(this).val(); 
      $('#area').load('cgi/test.pl',{string:url}); 
     }, 750); 
    }; 
}); 
+0

'setTimeout'で実装した方法では、完全な文字列を送信するためのスクリプトを取得できませんでしたが、最後に1〜​​2文字の文字列が残っていました。そのバージョンのスクリプトを探します。とにかく上記のスクリプトがうまくいけば、私はそれを試してみましょう。 –

+0

私はあなたが以前のタイムアウトをクリアしないと思うと思う。 –

関連する問題