JavaScript - AddEventListener на ajax.always () - PullRequest
0 голосов
/ 31 мая 2018

У меня есть список категорий провайдеров и провайдеров, загруженных ajax на страницу, и я добавил флажок рядом с каждым из них.

  1. When the ajax call is done, я добавляю EventListener на каждый флажок, чтобы иметь дело с проверенным / непроверенным.

  2. Я звоню get_dispos_fournisseurs when I checked/unchecked a category, потому что мне нужно перезагрузить провайдеров.

Проблема в том, что мой javascript не всегда вызывается.Это потому, что мой ajax на самом деле не сделан или потому что он асинхронный?Если да, как я могу это исправить?

Заранее спасибо:)

 xhrLoad_panneau = $.ajax({
        type: "post",
        url: path_to_load_panneau,
        data: "contexte=" + contexte ,
        success: function () {

            for (var i in fournisseurs) {

                  $(bloc_fournisseur).append("<input id='"+fournisseurs[i][15]+"' class='progi' categorie='" + fournisseurs[i][11] +"' distance='"+ distance_text +"' provider_name='"+fournisseurs[i][2]+"' name='fournisseur' type='checkbox' />");
                            $(bloc_fournisseur).append("<img class='progi-img' src='/assets/progi/calendrier.png' alt='progi' />");

    }).always(function(){
            get_dispos_fournisseurs();
    });


function get_dispos_fournisseurs(){

    var myFunction = function (event) {

        document.getElementById("btn-dispos").disabled = ($("input[name='fournisseur']:checked").length < 1) ? true : false;

        if ($("input[name='fournisseur']:checked").length > 5) {
            this.checked = false;
        } else {

            if (this.checked) {
                ids[this.id] = [this.getAttribute('provider_name'), this.getAttribute('distance')];
            } else {
                delete ids[this.id];
            }
        }
    };


    var checkboxes = document.getElementsByClassName('progi');
    for (i = 0; i < checkboxes.length; i++){
        checkboxes[i].removeEventListener("change", myFunction, false);
        checkboxes[i].addEventListener('change', myFunction, false);
    }
}
...