2017-08-04 3 views
1

J'ai une zone de texte qui enregistre les données dans ma base de données chaque fois que l'utilisateur appuie sur une touche ou écrit dans la zone de texte. Mon problème est que quand je veux montrer un message de succès comme "sauvé" dans un <p> il se répète chaque fois que quelqu'un frappe une clé, je veux montrer à plusieurs reprises le même message sous mais seulement une fois.Keyup show success-message une fois

Si possible, supprimer le message "sauvegardé" après 10 secondes.

Ce que je veux dire:
I want to remove this "LAGRET"

HTML:

<div class="form-group"> 
    <label for="comment">Kommentar:</label> 
    <textarea class="form-control" rows="5" id="comment" name="comment"></textarea> 
    <p name="message" id="message"></p> 

jQuery:

$("#comment").keyup(function(){ 
    var isTyping = $('#comment').val(); 
    var data = 'result=' + isTyping; 

    $.ajax({ 
     type: 'POST', 
     url: "commentsave.php", 
     data: data, 
     cache: false, 
     success: function(html){ 
      $('#message').append('Saved'); 

     } 
    }); 
}); 

PHP:

$name = $_POST['result']; 
echo $name; 

Merci beaucoup, vous ne avez pas besoin de code pour moi, mais juste me guider :)

+4

Diverses préoccupations avec cette approche en dehors de votre problème. Cela va potentiellement tirer fréquemment. Vous pouvez vouloir annuler cette logique afin de ne pas tirer sur * chaque * touche. Aussi, que faire si la clé était comme le changement? Ou une autre clé qui n'a pas changé la valeur (les touches fléchées sont communes)? il y a un événement 'input' qui ignore ceux-là. Deuxièmement, que faire si je colle quelque chose là-dedans? C'est une valeur aberrante, mais votre logique ne peut pas gérer cela. – Taplar

+4

C'est beaucoup trop de demandes AJAX. Retarder la requête AJAX pendant une seconde ou deux, si l'utilisateur décide de ne plus taper, puis envoyer la requête AJAX. [Répondre à ce problème] (https://stackoverflow.com/questions/1909441/how-to-delay-the-keyup-handler-until-the-user-stops-typing). – Spectarion

+1

Je suis d'accord avec vous deux, encore un apprenti et maintenant j'ai appris quelque chose de nouveau. Ill ajouter un délai de quelques secondes la réponse par Alive à mourir sera de toute façon montrer si le message a été enregistré ou non, je supprime le message "enregistré" après quelques secondes aussi afin que l'utilisateur ne sera pas confus si son sauvé ou non. Ill juste définir un délai juste avant ajax demande à droite. Merci à vous deux – Asim

Répondre

5

Change: -

$('#message').append('Saved'); 

à: -

$('#message').html('Saved'); 

Note: - append() ajouté les nouvelles données dans le existant à l'intérieur d'un élément, c'est pourquoi plusieurs messages réussis sont affichés.

Alors que html() va d'abord supprimer les anciennes données de l'élément, puis ajouter un nouveau. Donc, non-répétition va arriver.

S'il vous plaît essayer de lire chaque commentaire sous votre poste et essayer de les mettre en œuvre pour l'amélioration.Specially envoyer l'appel ajax sur chaque clé-up. Il va casser votre système à un certain moment.

+0

Merci beaucoup, ne sais pas pourquoi je n'ai pas pensé à cela! – Asim

+1

@ Asim heureux de vous aider :) :). tout le monde apprend lentement. Ne vous inquiétez pas –