jquery
  • ajax
  • 2011-09-20 1 views 2 likes 
    2

    Je poste des données en utilisant ajax et je veux changer le texte du bouton. Je ne sais pas vraiment par où commencer. Le code que j'ai est jusqu'à présent ci-dessous:Changer le texte sur le bouton avec Jquery après la publication

    $("input[type='button'][name='Subscribe']").click(function(e){ 
    $.ajax({ 
        type: "POST", 
        url: "test.php", 
        data:{ 
        id: $(this).attr('id'), 
        idMembers: $(this).attr('idMembers') 
        }, 
        success: function(msg){ 
         alert("Subscribed"); 
    
        } 
    }) 
    }); 
    
    +0

    $ ('# buttonid'). Val ('micimacko'); ou dans votre cas $ (this) .val ('rofibeka'); – Jauzsika

    Répondre

    5
    $("input[type='button'][name='Subscribe']").click(function(e){ 
    $this = $(this); 
    $this.val("processing") // or: this.value = "processing"; 
    $this.prop('disabled', true); // no double submit ;) 
    $.ajax({ 
        type: "POST", 
        url: "test.php", 
        data:{ 
        id: $this.attr('id'), 
        idMembers: $this.attr('idMembers') 
        }, 
        success: function(msg){ 
         alert("Subscribed"); 
         $this.val("i'm finally done!"); // pfewww, that's was hard work! 
        } 
    }) 
    }); 
    
    +0

    ci-dessus et au-delà, merci beaucoup – Textus

    0
    $("input[type='button'][name='Subscribe']").attr('value', 'newvalue here!'); 
    
    2

    Essayez ceci:

    $("input[type='button'][name='Subscribe']").click(function(e){ 
    
    $(this).text('My new text'); 
    
    $.ajax({ 
        type: "POST", 
        url: "test.php", 
        data:{ 
        id: $(this).attr('id'), 
        idMembers: $(this).attr('idMembers') 
        }, 
        success: function(msg){ 
         alert("Subscribed"); 
    
        } 
    }) }); 
    
    2
    $("input[type='button'][name='Subscribe']").click(function(e){ 
        var _button = $(e.target); 
        $.ajax({ 
         type: "POST", 
         url: "test.php", 
         data:{ 
         id: $(this).attr('id'), 
         idMembers: $(this).attr('idMembers') 
         }, 
         success: function(msg){ 
          alert("Subscribed"); 
          _button.val('Subscribed') 
         } 
        }) 
        }); 
    
    0

    Voici la meilleure solution parmi toutes celles qui vous donne le contrôle sur le moment vous voulez afficher quel texte-

    Il suffit d'ajouter beforeSend et complete méthode dans votre requête jQuery. Voici un exemple

    // contact form handling using AJAX 
    $('#contact-form').submit(function() { 
        var contactForm = $('#contact-form'), 
         btnSubmit = $('.btn-submit'); 
        $.ajax({ 
         type: contactForm.attr('method'), 
         url: contactForm.attr('action'), 
         data: contactForm.serialize(), 
         beforeSend: function() { // while sending the request the button is disabled and it shows loading spinner 
          btnSubmit.prop('disabled', true); 
          btnSubmit.html('<i class="fa fa-spinner fa-spin fa-fw btn-icon fa-2x"></i>'); 
         }, 
         complete: function() { // after the request is sent, the spinner is gone and now it's back to normal. One can submit again 
          btnSubmit.prop('disabled', false); 
          btnSubmit.html('<i class="fa fa-paper-plane fa-lg btn-icon" aria-hidden="true"></i> Submit'); 
         }, 
         success: function(response) { 
          if (response == 'success') { 
           alert("Hi, your query has been sent. I will be back to you soon. Thank you :)"); 
          } else { 
           var erroMsg = response.split('<br/>').join('\n'); 
           alert(erroMsg); 
          } 
         } 
        }); 
        return false; 
    }); 
    

    Comme vous pouvez le voir beforeSend vous permet de contrôler ce qu'il faut faire lorsque la demande est envoyée et complete vous permet de contrôler ce qui se passe lorsque la demande est envoyée avec succès.

    Espérons que ça aide. Je vous remercie.

    Questions connexes