2

この単純な Jquery コードを使用して、div から要素を取得し、php スクリプトのおかげで変更します。

$(document).ready(function(){
    $("#description").keyup(function(){
    var recherche = $(this).val();

    $.ajax({
        type : "GET",
        url : "result.php",
        data : {motclef: recherche},
        success: function(server_response){
        $("#resultat").html(server_response).show();
        }
    });
});

});

問題は、キーを押さずにいくつかの変更が発生する可能性があることです(コピー/貼り付け...)。私は .change() を試しましたが、要素のフォーカスが失われた場合にのみトリガーされます。

4

1 に答える 1

1

このように、1 回の呼び出しで複数のイベントにバインドするよう jQuery に指示できます。メソッド内に入ると、イベント タイプに基づいて動作をフィルター処理できます。貼り付けを処理するときは、関数呼び出しを少し遅らせて、ブラウザが最初に必要なすべてを実行できるようにすることをお勧めします。

編集

オートコンプリートを処理するために、このスタックオーバーフローの回答に基づいて回答を更新しました。

$("#description").on("keyup paste cut focus change blur",function (event) {

    var $this = $(this),
        delay = 0

    // Add delay for cut/paste
    if (event.type === "paste" || event.type === "cut") {
        delay = 5;
    }

    // Record the current value of the text box.
    if (event.type === "focus" || event.type === "change") {
        this.previousvalue = this.value;
    }

    // Trigger the change event if the value is now different.
    if (event.type === "blur") {
        if (this.previousvalue !== this.value){
            $this.change();
            return false;
        }
    }

    window.setTimeout(function () {

        var recherche = $this.val();

        $.ajax({
            type : "GET",
            url : "result.php",
            data : {motclef: recherche},
            success: function(server_response){
                $("#resultat").html(server_response).show();
            }
        });                  

    }, delay);
});
于 2012-11-30T15:01:47.633 に答える