[英]jQuery: Show message every 60 seconds
用户可以向文本区域添加一些文本。 每60秒钟将文本保存到数据库中。
我需要一条消息,显示“文本已保存” 3秒钟,然后再次隐藏。 间隔应为60秒。 该消息应显示在文本区域上方,但仅当文本区域中有文本时才显示。
我试过了:
function autoSaveEntry() {
if($('#txtarea').val().length>0){
$('#message').append('Text is saved');
setTimeout(function () {
$('#message').fadeOut(function(){});
}, 3000);
}
setTimeout(autoSaveEntry, 60000)
}
的HTML
<div id="#message"></div>
<textarea id="txtara"></textarea>
存在很多问题,其中许多是简单的错字:
这是一个更正的版本(演示时间大大减少,否则与您现有的代码相似):
function autoSaveEntry() { console.log($('#txtarea').val()) if ($('#txtarea').val().length > 0) { $('#message').text('Text is saved').show(); setTimeout(function() { $('#message').fadeOut(); }, 1000); } } setInterval(autoSaveEntry, 5000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="message"></div> <textarea id="txtarea"></textarea>
不过,这不是实现您要尝试执行的操作的好方法; 只要该字段包含文本,它就会导致该消息不断出现并再次消失。 可以考虑在变更事件上运行,而不必间隔一定时间运行,并且每分钟不断地将相同的值保存到数据库中。 并且不只是检查该字段是否为空,而是检查其内容是否已更改(因此需要保存):
$('#txtarea').on('change', function() { if ($(this).val() !== $(this).data("lastval")) { // here you would save the data, and ideally wrap the following code in a promise resolve from that ajax call. $('#message').show(); setTimeout(function() { $('#message').fadeOut(); }, 1000); } $(this).data("lastval",$(this).val()); // stash the current value for next time });
#message { display: none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="message">Text is saved</div> <textarea id="txtarea"></textarea>
更正后的代码如下所示:
HTML:
<div id="message"></div>
<textarea id="txtarea"></textarea>
脚本:
setInterval(autoSaveEntry, 60000);
function autoSaveEntry() {
if($('#txtarea').val().length>0){
$('#message').append('<label>Text is saved</label>');
setTimeout(function () {
$('#message').fadeOut(function(){});
}, 3000);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.