Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.02.2013, 18:54
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

Запрет js кода, пока не закончиться предыдущий.
Здравствуйте, есть у меня поле для ввода текста, кнопка для отправки содержимого и еще есть блок с выводом ошибки.

В этот блок заноситься текст ошибки, например:
Пользователь не ввел текст и нажал на кнопку отправить -- в блоке ошибок появиться текст: "Нельзя отправлять пустое сообщение".

Все работает на ура, но только вот если пользователь нажмет больше одного раза на кнопку, при это не введя нечего в поле отправки (то есть попытается отправить пустое сообщение), то ошибка будет появляться несколько раз подрят одна после одной.

Вопрос: Как избавиться от повторного "проигрывания" js кода пока не закончиться предыдущий?

Вот как в js у меня выводит текст ошибки:
$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");

Спасибо большое!

Последний раз редактировалось Vladislav, 16.02.2013 в 18:58.
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2013, 19:06
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");resultStat='';
Ответить с цитированием
  #3 (permalink)  
Старый 16.02.2013, 19:12
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

Сообщение от Deff Посмотреть сообщение
$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");resultStat='';
Не помогло.
Ответить с цитированием
  #4 (permalink)  
Старый 16.02.2013, 19:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Vladislav,
Мало инфы, Выложите более полную функцию
Ответить с цитированием
  #5 (permalink)  
Старый 16.02.2013, 19:26
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

$(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;                                                               
    });
});
Ответить с цитированием
  #6 (permalink)  
Старый 16.02.2013, 19:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

$(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;          
         }                                                     
    });
});

Последний раз редактировалось Deff, 16.02.2013 в 20:23.
Ответить с цитированием
  #7 (permalink)  
Старый 17.02.2013, 00:32
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

Js не работает вообще если я нажимаю на кнопку второй раз. Если один раз, то норм, а вот второй все... страница уже не работает.
Ответить с цитированием
  #8 (permalink)  
Старый 17.02.2013, 00:37
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Vladislav,
Вы измените содержимое хотя одного

var mes=$("#mes").val();
var taker=$("#taker").val();
var sender=$("#sender").val();

- там проверка повтора одного и того же ввода
Если проверка не нужна - уберите строку
if( arr.join('')=== V.join('')) return;

Последний раз редактировалось Deff, 17.02.2013 в 00:39.
Ответить с цитированием
  #9 (permalink)  
Старый 17.02.2013, 14:49
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

Неа... нечего не получается строчку убрал, но все равно если нажму больше одного раза на кнопку "Опубликовать" (то есть отправить сообщение), то будет появляться ошибка одна за одной. Может кинуть Вам сайт, Вы сами попробуете?

Вот сайт: http://socnet.bget.ru/id6

Cкриншот куда нажимать:

Ответить с цитированием
  #10 (permalink)  
Старый 17.02.2013, 15:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Vladislav
Вот сайт: http://socnet.bget.ru/id6
Вот этого Скрипта
Цитата:
$(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);
}
}
});alert("Подгружен Aякс") //
return false;
}
});
});
Добавил алерт для теста обращений к серверу (потом убрать)
У Вас нет!
Вместо этого стоит исходный
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу приличный редактор кода под JS Universe Общие вопросы Javascript 28 30.10.2012 18:30
Вывод кусков HTML кода с одного файла JS wlad2 Общие вопросы Javascript 16 04.01.2011 11:52
Рациональность JS кода. Илюшенций Общие вопросы Javascript 3 25.08.2010 13:02
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33
Как с помощью JS "на-лету" менять часть HTML кода greendoc Общие вопросы Javascript 2 18.03.2008 20:43