2011-04-19 106 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