1

ドロップダウンの変更によって呼び出される関数があります。関数が実行中で、ユーザーがドロップダウンを変更する可能性があります。

その場合は、実行中の機能を停止してください。

元。

$('.txtCategory').change(function(){
    ajaxPost('para', 'meters').stop(); //doesn't work
    $('#Submit').attr('data-check', 'on');
    $('#Submit').val('Stop Checking');
});

これは可能ですか?

前もって感謝します!

よろしく、グイド

4

4 に答える 4

2

これは単純な理由で不可能です。スクリプトの実行は 1 つのスレッドでのみ行われ、一度に実行できる関数は 1 つだけです。

ローカル イベントまたはクエリに応答するコールバックは、現在の関数の実行が完了するまで呼び出されません。

于 2012-12-04T11:30:50.007 に答える
0

@ギド

私はあなたが他の何かを望んでいると思います..あなたの質問をよりよく説明してください...これはあなたが本当に達成したいことではないと思います..

また、これらを使用できます

Create a setTimeOut function call and run it every 1000ms so whenever you want to
stop that setTimeOut function you can simple use clearTimeOut to stop it.
it will help you out. if you have still any issues let me know :)
于 2012-12-04T11:33:59.580 に答える
0

他の人が述べたように、JavaScript で別の関数から関数を停止することは不可能です。

ただし、フラグを使用して、Ajax リクエストが現在実行中かどうかを確認できます。その目的のために、jQuery には文書化されていない$.activeプロパティがあります。次のように使用できます。

$(".txtCategory").change(function() {
    if ($.active > 0)    // if there are more than 0 Ajax requests running
        return false;    // at a time we stop executing the current callback

    ajaxPost("para", "meters");
    $("#Submit").data("check", "on").val("Stop Checking");
});
于 2012-12-04T11:45:12.557 に答える
0

As others mentioned It is not possible to stop/abort a function from another as they both are sync process. On the other hand if you want to stop/abort a AJAX (first A stands for Asynchronous) request you can do that with the help of jQuery's AJAX return object. To do that you can follow the following steps;

First create a global variable to handle AJAX object;

var xhr = null;

When you request by AJAX assign the return object to this variable;

xhr = $.ajax(
    url: "http://someurl.org",
    success: function() { ... }
    );

Now when you need to abort request just a xhr.abort() call should do the trick.

if (xhr != null)
    xhr.abort();

Hope that helps;

于 2012-12-04T11:40:59.967 に答える