Comment désactiver un bouton d’envoi lorsque la demande AJAX est en cours et l’activer après avoir reçu une réponse AJAX réussie?

J’ai le code HTML suivant:

All Manufacturers Test RK Blue Nun Unique Imports Pernod Ricard Smoking Loon Beringer
All Products Riesling Superio Vodka Heineken Strong Bow Grocery Ruler Glass Brown Bread White Bread Cabernet Sauvignon
     

Le code AJAX jQuery est le suivant:

 function GetProductByManufacturerID(value) { $.ajax({ type: "POST", url: "add_rebate_by_quat_volume.php", data: { manufacturer_id: value, op:"" }, beforeSend: function() { $("#product_id").html(' Loading ...'); }, success:function(data){ $("#product_id").html(''); $("#product_id").append(data); } }); } 

Je souhaite désactiver le bouton d’envoi lorsque la fonction AJAX est appelée en modifiant la valeur du contrôle de sélection (contrôle de sélection pour la sélection du fabricant). Cette valeur doit être désactivée jusqu’à réception de la réponse de réussite AJAX. Lorsque la réponse de succès AJAX sera reçue, l’utilisateur devrait pouvoir cliquer sur le bouton d’envoi. Comment y parvenir? Merci d’avance.

pour désactiver

  $("#search").prop('disabled', true); 

pour permettre

  $("#search").prop('disabled', false); 

comme ci-dessous dans votre fonction

 function GetProductByManufacturerID(value) { $.ajax({ type: "POST", url: "add_rebate_by_quat_volume.php", data: { manufacturer_id: value, op:"" }, beforeSend: function() { $("#product_id").html(''); $("#search").prop('disabled', true); // disable button }, success:function(data){ $("#product_id").html(''); $("#product_id").append(data); $("#search").prop('disabled', false); // enable button } }); } 

Quelque chose comme ça ferait ce que vous voulez. Ceci est global, pour toute la page, pour toute requête ajax.

 $(document).ajaxStart(function() { $("#search").prop('disabled', true); }).ajaxStop(function() { $("#search").prop('disabled', false); }); 

Je voudrais désactiver le bouton avant l’appel ajax et l’activer à nouveau en cas de rappel de succès, un problème à faire quelque chose comme ci-dessous?

  function GetProductByManufacturerID(value) { $('#search').addAttr('disabled'); $.ajax({ type: "POST", url: "add_rebate_by_quat_volume.php", data: { manufacturer_id: value, op:"" }, beforeSend: function() { $("#product_id").html(''); }, success:function(data){ $("#product_id").html(''); $("#product_id").append(data); $('#search').removeAttr('disabled'); } }); }