Запрет js кода, пока не закончиться предыдущий.
Здравствуйте, есть у меня поле для ввода текста, кнопка для отправки содержимого и еще есть блок с выводом ошибки.
В этот блок заноситься текст ошибки, например: Пользователь не ввел текст и нажал на кнопку отправить -- в блоке ошибок появиться текст: "Нельзя отправлять пустое сообщение". Все работает на ура, но только вот если пользователь нажмет больше одного раза на кнопку, при это не введя нечего в поле отправки (то есть попытается отправить пустое сообщение), то ошибка будет появляться несколько раз подрят одна после одной. Вопрос: Как избавиться от повторного "проигрывания" js кода пока не закончиться предыдущий? Вот как в js у меня выводит текст ошибки: $("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast"); Спасибо большое! |
$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");resultStat=''; |
Цитата:
|
Vladislav,
Мало инфы, Выложите более полную функцию |
$(function(){ $("#mes_wall_submit").click(function(){ var mes=$("#mes").val(); var taker=$("#taker").val(); var sender=$("#sender").val(); $.ajax({ type: "POST", url: "handlers/mes_wall", data: {"mes": mes, "taker": taker, "sender": sender}, cache: false, success: function(response){ var messageResp = new Array('Произошел сбой в системе, перезайдите на свой аккаунт..','Нельзя отправлять пустое сообщение..','Ваше сообщение слишком длинное..'); var resultStat = messageResp[Number(response)]; if(response == 0){ $("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast"); } else if(response == 1){ $("#error_mes_box").text(resultStat).show().delay(2500).slideToggle("fast"); } else if(response == 2){ $("#error_mes_box").text(resultStat).show().delay(2500).slideToggle("fast"); } else{ $("#error_mes_box").css('display','none'); $("#mes").val(""); $("#wall_message_block").html(response); } } }); return false; }); }); |
$(function(){ var arr=[],start=true; $("#mes_wall_submit").click(function(){ var mes=$("#mes").val(); var taker=$("#taker").val(); var sender=$("#sender").val(); var V = arr; arr =[mes,taker,sender]; if(start){ if( arr.join('')=== V.join('')) return; start=false; $.ajax({ type: "POST", url: "handlers/mes_wall", data: {"mes": mes, "taker": taker, "sender": sender}, cache: false, success: function(response){start=true; var messageResp = new Array('Произошел сбой в системе, перезайдите на свой аккаунт..','Нельзя отправлять пустое сообщение..','Ваше сообщение слишком длинное..'); var resultStat = messageResp[Number(response)]; if(response == 0){ $("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast"); } else if(response == 1){ $("#error_mes_box").text(resultStat).show().delay(2500).slideToggle("fast"); } else if(response == 2){ $("#error_mes_box").text(resultStat).show().delay(2500).slideToggle("fast"); } else{ $("#error_mes_box").css('display','none'); $("#mes").val(""); $("#wall_message_block").html(response); } } }); return false; } }); }); |
Js не работает вообще если я нажимаю на кнопку второй раз. Если один раз, то норм, а вот второй все... страница уже не работает.
|
Vladislav,
Вы измените содержимое хотя одного var mes=$("#mes").val(); var taker=$("#taker").val(); var sender=$("#sender").val(); - там проверка повтора одного и того же ввода Если проверка не нужна - уберите строку if( arr.join('')=== V.join('')) return; |
Неа... нечего не получается строчку убрал, но все равно если нажму больше одного раза на кнопку "Опубликовать" (то есть отправить сообщение), то будет появляться ошибка одна за одной. Может кинуть Вам сайт, Вы сами попробуете?
Вот сайт: http://socnet.bget.ru/id6 Cкриншот куда нажимать: |
Цитата:
Цитата:
У Вас нет! Вместо этого стоит исходный |
Часовой пояс GMT +3, время: 01:25. |