2017-08-04 7 views
1

私は、ユーザがキーを押すたびに、またはテキストエリア内に書き込むたびに、自分のデータベースにデータを保存するテキストエリアを持っています。私の問題は、誰かがキーを押すたびに繰り返される<p>に「保存」のような成功メッセージを表示したいときに、同じメッセージを繰り返して1回だけ表示したいと思うことです。Keyup show success-message one time

可能であれば、10秒後に「保存済み」メッセージが正常に削除されることがあります。

これは私が何を意味するかです:
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; 

はどうもありがとうございました、いけないあなたは私のためにコーディングする必要がありますが、ちょうど私を導い:)

+4

問題とは別に、このアプローチにさまざまな懸念があります。これは潜在的に頻繁に発火するだろう。このロジックをデバウンスして、毎回の*キーを発射しないようにすることができます。キーがシフトのようなものだったらどうしますか?値を変更しなかった別のキー(矢印キーは共通)?それらを無視する '入力'イベントがあります。第二に、何かをそこに貼り付けるとどうなりますか?それは異常値ですが、あなたのロジックはそれを処理しません。 – Taplar

+4

それはあまりにも多くのAJAXリクエストです。ユーザーがもう入力しないことを決定した場合は、AJAX要求を2〜2回遅らせ、AJAX要求を送信します。 [この問題への回答](https://stackoverflow.com/questions/1909441/how-to-delay-the-keyup-handler-until-the-user-stops-typing) – Spectarion

+1

私はあなたの両方に同意します、まだ学習者です、そして今、私は何か新しいことを学びました。病気は数秒間遅延を追加します。メッセージが保存されているかどうかに関係なく、死ぬまでの生存者の回答が表示されます。数秒後に「保存」されたメッセージも削除されますので、保存されているかどうかは分かりません。悪いことに、Ajaxリクエストの権利の直前に遅延を設定してください。あなたのおかげです。 – Asim

答えて

5

変更: -

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

に: -

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

注: - append()は、既存の-1に新しいデータを追加しました要素の中にあるので、複数の正常なメッセージが表示されます。

html()は、古いデータを最初に削除し、次に新しいものを追加します。だから反復は起こりません。

あなたの投稿の下のすべてのコメントを読んで、改善のためにそれらを実装しようとしてください。特に、各キーアップでajaxコールを送信しないでください。ある時点でシステムが壊れてしまいます。

+0

ありがとう、私はこれを考える理由を知らなかった! – Asim

+1

@Asimあなたを助けてうれしい:) :) :)誰もがゆっくりと学びます。心配しないでください –