2011-04-19 78 views
0

嗨,大家好,jQuery的延迟和KEYUP

我想要做的是当有人输入到文本字段KEYUP,一旦他们已经完成打字显示动画GIF,GIF将消失并显示消息“保存”几秒钟,然后消失。

什么我迄今所做的是:

if ($('.gallery_items li input').length > 0) { 
    $('.gallery_items li input').keyup(function() {   
     var li = $(this).parent(); 
     li.children('.gallery_saving').removeClass('dn'); 
     var identity = li.attr('id').split('_'); 
     var v = $(this).val(); 
     var url = '/caption/id/' + identity[1]; 
     $.post(url, { caption : v }); 
     $.delay(500).li.children('.gallery_saving').delay(500).html('Saved...').delay(500).addClass('dn');   
     return false; 
    }); 
} 

凡类“gallery_saving”具有指定为背景图像和阶级“DN” gif动画有简单的样式表“显示:无”。 最初'gallery_saving'也有类'dn' - 以便它不可见,当有人开始键入类'dn'时被删除 - 显示加载器。

你明明看到问题已经与:

$.delay(500).li.children('.gallery_saving').delay(500).html('Saved...').delay(500).addClass('dn'); 

,我知道这是错的,但无法弄清楚如何做到这一点 - 任何人都可以帮忙吗?

+0

你能提供HTML来处理吗? – 2011-04-19 09:38:14

+0

小心你对['.delay()'](http://api.jquery.com/delay/)的理解,它的确如下:_“设置一个计时器来延迟队列中后续项目的执行”_ - 但它是为了效果队列,而不是一切。看看[这里的例子](http://jsfiddle.net/xG8Hf/3/),你会看到['.show()'](http://api.jquery.com/show)没有任何参数不是一个效果,所以不会延迟,''.css()'](http://api.jquery.com/css)效果也不会延迟,但['.slideDown( )'](http://api.jquery.com/slidedown/)是一种效果,所以它会延迟! – Scoobler 2011-04-19 11:23:54

回答

1

您应该删除加载不上的延迟时间,但对输入的数据的安全成功的..

喜欢的东西

url = "/echo/html"; 
v = "test"; 
$.ajax({ 
    url: url, 
    type: 'POST', 
    data: ({ caption: v}), 
    success: function(){ 
    $('.gallery_saving').html('Saved...').delay(1000).fadeToggle("slow"); 
    }, 
    error: function() { 
    $('.gallery_saving').html('Error...').delay(1000).fadeToggle("slow"); 
    } 
}); 

例子:http://fiddle.jshell.net/gabel/udvbx/

http://api.jquery.com/jQuery.ajax/详情..

1

尝试这样做并不是一个特别好的想法,因为你最终会做出大量的ajax调用if用户还没有真正完成打字。如果用户输入的速度很慢,那么您将无故无意地保存数据。

您也可以使用show()hide()而不是dn类。或者使用toggleClass()

+1

这是真的 - 你不应该只通过输入发布请求来处理你自己的服务器。模糊或超时应该用来防止这种行为。 – gabel 2011-04-19 09:49:25

+1

我认为你是对的人 - 模糊可能有点棘手,因为有人可能会将光标留在文本字段中,并单击链接转到另一页,我相信这同样适用于超时 - 所以推测最好的选择是有保存按钮的地方 - 不那么复杂,但会做我想做的工作。 – user398341 2011-04-19 09:54:10