2017-08-04 80 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很高兴帮助你:) :)。每个人都慢慢学习,所以不要担心 –