2009-08-16 2 views
3

, это, вероятно, очень просто для эксперта jQuery.jQuery AJAX: Как добавить сообщение «SAVED» и заставить его исчезнуть после второго

У меня < DIV ID = " form23 " > < форма > <TextArea> blahblah </TextArea > < тип входного = " кнопку " значение = " сохранить " OnClick = " saveCaption (23) " > </форма > </div >

Я хочу сообщение SAVED a ppear и исчезают. Но я НЕ хочу, чтобы форма или ее элементы исчезли.

У меня есть вызов AJAX, который выглядит следующим образом.

function saveCaption(id) { 

var queryString = $('#form'+id).formSerialize(); 

    $.ajax({ 

    type: "POST", 

    url: "includes/ajax.php?request=saveCaption", 

    data: queryString, 

    success: function(response) { 

     $('#form'+id).append(response) 

    } 

    }); 

    return false; 

} 

Мне было интересно .. Я могу добавить ответ. Но есть ли способ исчезнуть сразу после второй. Прямо сейчас, он просто продолжает повторять и добавлять к последнему добавлению. Я бы хотел, чтобы он появился и исчез сразу после использования fadeOut.

ОБНОВЛЕНИЕ: Я сделал это на основе ответаIV и RaYell. Это работает ... но элегантно ли это?

функция saveCaption (ID) {

var queryString = $('#form'+id).formSerialize(); 

    $.ajax({ 

    type: "POST", 

    url: "includes/ajax.php?request=saveCaption", 

    data: queryString, 

    success: function(response) { 

     $('#form'+id).append('<div id="message">'+response+'</div>'); 

     setTimeout(function() { 

      $('#message').fadeOut(function(){ 

      $(this).remove(); 

      }); 

     }, 1000); 

    } 

    }); 

    return false; 

}

+0

Я сделал это на основе ответаIV и RaYell. Но элегантно ли это? Функция saveCaption (id) { \t var queryString = $ ('# form' + id) .formSerialize(); \t $ .ajax ({ \t \t типа: "POST", \t \t URL: "включает/ajax.php запрос = saveCaption?", \t \t данные: QueryString, \t \t успех: функция (отклик) { \t \t $ ('# form' + id).append ('

'+response+'
'); \t \t \t SetTimeout (функция() { \t \t \t $ ('# сообщение') Затухание (функция() { \t \t \t \t $ (это) .remove();. \t \t \t}); \t \t \t}, 1000); \t \t} \t}); \t return false; } –

+0

Я определенно не могу ответить, если это самый изящный способ или нет, поскольку, возможно, есть и другой способ сделать это. Рад, что это работает! :) Привет. – theIV

ответ

4

Я думаю, вы захотите сделать комбинацию ответа RaYell выше, но используйте удаление в обратном вызове fadeOut, иначе он будет продолжать добавляться к предыдущему добавлению - по крайней мере, я думаю, что он будет делать это на основе как вы сформулировали свой вопрос. Что-то вроде этого могло бы работать:

setTimeout(function() { 
    $('selector').fadeOut(function(){ 
    $(this).remove(); 
    }); 
}, 1000); 
3

После добавления Ваше сообщение добавить это (в успех обратного вызова):

setTimeout(function() { 
    $('selector').fadeOut(); 
}, 1000); 

Заменить переключатель с чем-то, что будет на самом деле соответствуют вашему сообщению.

+0

Не совсем уверен, что я понимаю .. мой ответ «Сохранен». Хммм .. хотел бы разуметь писать код внутри моего кода, чтобы я мог понять? –

+0

@Scott, я думаю, вам лучше потратить некоторое время, пытаясь понять, что именно вам нужно делать, поскольку @RaYell дал вам неплохое направление, как вам это нужно. SO - это не то место, где люди будут писать для вас код. –

 Смежные вопросы

  • Нет связанных вопросов^_^