16.02.2013, 18:54
|
Кандидат Javascript-наук
|
|
Регистрация: 13.02.2013
Сообщений: 105
|
|
Запрет js кода, пока не закончиться предыдущий.
Здравствуйте, есть у меня поле для ввода текста, кнопка для отправки содержимого и еще есть блок с выводом ошибки.
В этот блок заноситься текст ошибки, например:
Пользователь не ввел текст и нажал на кнопку отправить -- в блоке ошибок появиться текст: "Нельзя отправлять пустое сообщение".
Все работает на ура, но только вот если пользователь нажмет больше одного раза на кнопку, при это не введя нечего в поле отправки (то есть попытается отправить пустое сообщение), то ошибка будет появляться несколько раз подрят одна после одной.
Вопрос: Как избавиться от повторного "проигрывания" js кода пока не закончиться предыдущий?
Вот как в js у меня выводит текст ошибки:
$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");
Спасибо большое!
Последний раз редактировалось Vladislav, 16.02.2013 в 18:58.
|
|
16.02.2013, 19:06
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");resultStat='';
|
|
16.02.2013, 19:12
|
Кандидат Javascript-наук
|
|
Регистрация: 13.02.2013
Сообщений: 105
|
|
Сообщение от Deff
|
$("#error_mes_box").text(resultStat).show().delay(5500).slideToggle("fast");resultStat='';
|
Не помогло.
|
|
16.02.2013, 19:23
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Vladislav,
Мало инфы, Выложите более полную функцию
|
|
16.02.2013, 19:26
|
Кандидат Javascript-наук
|
|
Регистрация: 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;
});
});
|
|
16.02.2013, 19:38
|
без статуса
|
|
Регистрация: 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.
|
|
17.02.2013, 00:32
|
Кандидат Javascript-наук
|
|
Регистрация: 13.02.2013
Сообщений: 105
|
|
Js не работает вообще если я нажимаю на кнопку второй раз. Если один раз, то норм, а вот второй все... страница уже не работает.
|
|
17.02.2013, 00:37
|
без статуса
|
|
Регистрация: 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.
|
|
17.02.2013, 14:49
|
Кандидат Javascript-наук
|
|
Регистрация: 13.02.2013
Сообщений: 105
|
|
Неа... нечего не получается строчку убрал, но все равно если нажму больше одного раза на кнопку "Опубликовать" (то есть отправить сообщение), то будет появляться ошибка одна за одной. Может кинуть Вам сайт, Вы сами попробуете?
Вот сайт: http://socnet.bget.ru/id6
Cкриншот куда нажимать:
|
|
17.02.2013, 15:24
|
без статуса
|
|
Регистрация: 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);
}
}
});alert("Подгружен Aякс") //
return false;
}
});
});
|
Добавил алерт для теста обращений к серверу (потом убрать)
У Вас нет!
Вместо этого стоит исходный
|
|
|
|