2011-04-19 3 views
0

HI들,jQuery를 지연과의 keyup

난 할 노력하고있어하는 사람의 keyup로하고 입력을 완료하면 텍스트 필드에 텍스트를 입력하는 동안 애니메이션 GIF를 표시하는 것입니다, 지프가 사라 'Saved'메시지를 몇 초 동안 표시하면 사라집니다. 내가 지금까지했던 어떤

은 다음과 같습니다

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는 단순히 CSS를 가지고있다'표시 : 없음 '. 처음에는 'gallery_saving'클래스도 'dn'클래스를 가지고 있으므로 표시되지 않습니다. 'dn'클래스가 타이핑을 시작하면 로더가 표시됩니다.

당신은 분명히 문제와 이미 참조 :

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

내가 잘못 알고 있지만, 작업을 수행하는 방법을 알아낼 수 없습니다 - 누군가가 도와 드릴까요?

+0

함께 사용할 HTML을 제공 할 수 있습니까? –

+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

답변

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

다음과 같이 많은 수의 아약스 호출을 작성하게되므로이 작업을 시도하고 수행하는 것이 좋습니다. 사용자는 실제로 입력을 완료하지 않았습니다. 사용자가 입력 속도가 느린 경우 아무 이유없이 많은 시간 동안 데이터를 저장하게됩니다.

dn 클래스 대신 show()hide()을 사용할 수도 있습니다. 또는 사용 toggleClass()

+1

그게 사실이야 - 당신은 그냥 입력하여 게시물 요청과 함께 자신의 서버를 dos해서는 안된다. blur 또는 timeout은 그 행동을 막기 위해 사용되어야한다. – gabel

+1

저는 여러분이 옳은 사람이라고 생각합니다. 누군가가 텍스트 필드에 커서를두고 다른 페이지로 이동하는 링크를 클릭하면 시간이 흐려질 수도 있습니다. 아마도 가장 좋은 옵션은 Save 버튼을 어딘가에 가지고있는 것 - 정교하지는 않지만 내가 추측하는 일을 할 것입니다. – user398341