2017-08-04 116 views
1

我有一個文本區域,每當用戶點擊一個鍵或在文本區域內寫入時,該文本區域就會將數據保存在我的數據庫中。我的問題是,當我想在<p>中顯示成功消息(如「已保存」)時,每次有人點擊某個鍵時都會重複自己,我希望它在下一次但僅重複顯示相同的消息。Keyup一次顯示成功消息

如果可能的話可以在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請求延遲一秒或兩秒,如果用戶決定不再輸入,則發送AJAX請求。 [回答這個問題](https://stackoverflow.com/questions/1909441/how-to-delay-the-keyup-handler-until-the-user-stops-typing)。 – Spectarion

+1

我同意你們兩個,還是一個學習者,現在我學到了一些新東西。如果信息被保存或者沒有保存,我會在幾秒鐘內添加一個延遲幾秒鐘,Alive死亡的答案會顯示,如果保存或不保存,我會在幾秒鐘後刪除「保存」的消息。我只是在ajax請求正確之前設置一個延遲。謝謝你們兩位 – Asim

回答

5

變化: -

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

到: -

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

注: - append()添加新的數據到現有的一在元素內部,這就是顯示多個成功消息的原因。

雖然html()將首先從元素中刪除舊數據,然後添加新元素。所以沒有重複會發生。

請嘗試閱讀您的帖子下的每條評論,並嘗試實施它們以改善。特別是不要在每個鍵盤上發送ajax調用。它會在某個時間點打破你的系統。

+0

非常感謝,不知道爲什麼我沒有想到這個! – Asim

+1

@Asim很高興幫助你:) :)。每個人都慢慢學習,所以不要擔心 –