1

$(function() {});ページの読み込み時にjQueryイベントを実行するために使用しています。

3 つの入力要素を使用してキーワード (年、メーカー、モデル) でデータをフィルタリングするデータ フィルタリング フォームがあります。3 つすべてが同じクラスを持ち、.on("keyup")入力された (1 つまたは 2 つまたは 3 つの) 値を json を返す PHP スクリプトに送信するハンドラーを割り当てます。

問題: 入力を入力した後、結果は期待どおりにフィルター処理されますが、しばらくすると結果が再度読み込まれますが、今度はページが読み込まれたかのように表示されます (すべての結果)。

コードの一部を次に示します。

function load_vehicle_fitment(args) {
if(args === undefined) {
    args = {};
}

args['func'] = 'print_fitment';

$.get('ajax_get.php', args,
    function(data) {
        $('#fitment_data').html(data.html);
}, "json");
}


$(function() {
// INITIAL
load_vehicle_fitment();

// FILTER YMM COMBOS
$(".filter_input").on("keyup", function(e) {
    var typed_length = $(this).val().length;

    if(typed_length < 1 || typed_length > 2) {
        var args = {};
        var year = $("#year").val();
        var make = $("#make").val();
        var model = $("#model").val();

        if(year.length > 3) {
            args["year"] = year;
        }
        if(make.length > 2) {
            args["make"] = make;
        }
        if(model.length > 2) {
            args["model"] = model;
        }

        load_vehicle_fitment(args);
    }
});

});

この動作の原因は何ですか??


アップデート:

検索フォーム:

<form name="vehicle_search" method="get" action="">
<input type="hidden" name="view" value="vehicles">
<input type="text" id="year" name="year" maxlength="4" size="2" class="filter_input" placeholder="Year" value="" style="padding: 3px;" autocomplete="off">
<input type="text" id="make" name="make" class="filter_input" placeholder="Make" value="" style="padding: 3px;">
<input type="text" id="model" name="model" class="filter_input" placeholder="Model" value="" style="padding: 3px;">
<input type="submit" value="Add" id="add_vehicle_button" disabled="disabled">
</form>

アップデート:

@Kevin B、@teewuane jQueryリクエストをsetTimeoutでラップしました。これにより、基本的に、キーアップからnミリ秒経過するまで「待機」し、その時点で実行されます。これにより、http リクエストがこのような事態から保護されます。

XHR finished loading: ".../ajax_get.php?year=1982&make=F". 
XHR finished loading: ".../ajax_get.php?year=1982&make=Fo". 
XHR finished loading: ".../ajax_get.php?year=1982&make=For". 
XHR finished loading: ".../ajax_get.php?year=1982&make=Ford". 

面白いことに、これで私が経験していたエラーが修正されたようです。正確な理由がわからないのは痛いです。

4

1 に答える 1

0

キーアップルックアップを放棄することはしませんが、少なくともそれを抑制し、新しいルックアップが開始されたときに既存のルックアップを中止する必要があります。

于 2012-10-31T00:41:37.680 に答える