Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Jquery, ajax и скрытие дива


Автор: IgorIV 1.2.2011, 00:15
Есть некоторые файлы на странице. Отправляю их id аяксом на сервер. 
Код


<li><span onclick="if (verificationform()) 
{ document.form1.action='uploadfile.php?do=sendemail'; $('#form1').ajaxSubmit(optionsMail); }" > Отправить на почту </span>
</li>



Код

$(document).ready(function(){
    
optionsMail = {
    target: "#ajax-mail-output",  
    type: "POST",
    clearForm: false,
    //beforeSubmit: showRequest, 
    success: showResponse('#ajax-mail-output') , 
    timeout: 5000 
};

function showResponse(div)  {
    $(div).show('slow');
    
    $(div).delay(10000).fadeOut(5000);

    sendMail++;
    alert (sendMail) ;

}
}

Ответ сервера выводится здесь

<div id="ajax-mail-output"></div> 
Форма отправляется нормально.
После приема ответа сервера получается так

<div id="ajax-mail-output" style="display: none;">Файлы отправлены на почту.</div>

Соответственно надпись исчезает спустя некоторое время. И больше не появляется.

Как мне сделать что-то из следующего
1 При каждой отправке формы на сервер появляется сообщение Файлы отправлены на почту. Пока сообщение появляется только в первый раз.
2 Запретить посылать форму вторично. Вроде ввел переменную sendMail, но алерт появляется только при загрузке страницы.


Автор: нуп 1.2.2011, 00:46
Гугль -> jquery one()

Автор: IgorIV 1.2.2011, 21:10
нуп, спасибо, получилось smile

Автор: IgorIV 5.2.2011, 11:39
Неправильно получилось.
Надо не один раз нажать на кнопку, а не дать повторно отправить данные в случае успешной первой отправки. А так получилось, что в случае неудачной отправки, повторно отправить не получится.

Автор: c0va23 5.2.2011, 15:31
Тогда лучше <span> заменить на <button> или хотя бы обернуть в него. При нажатии кнопки её нужно отключить через .attr('disabled', true), а при не удачной отправки опять её включать через .attr('disabled', false)

Автор: IgorIV 12.2.2011, 17:42
Сделал по другому

Код


 function showResponse(div)  {
    
    $(div).delay(7000).fadeOut(5000);

    sendMail++;




// Кнопка "отправить на почту" (sendmail), можно нажать только один раз.
    
sendMail=0;    

$("#sendmail").click (function(){
    
     if (sendMail > 0) return false; 

    if (verificationform()) { 
        $('#form1').attr ('action', 'uploadfile.php?do=sendemail'); 
        $('#form1').ajaxSubmit({    
                                target: "#ajax-mail-output",  
                                type: "POST",
                                clearForm: true,
                                //beforeSubmit: showRequest, 
                                success: showResponse('#ajax-mail-output') , 
                                timeout: 5000 }); 
    };
});

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)