Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2019, 10:07
Интересующийся
Отправить личное сообщение для teplov Посмотреть профиль Найти все сообщения от teplov
 
Регистрация: 23.08.2019
Сообщений: 13

Запретить ввод пустого сообщения
Всем привет!Есть чат,по кнопке send в чат отправляется пустое сообщение как от этого избавиться?Вот код формы
<div class="input-group" >
<form target="myIFR" action="" name="order">
<input id="text" type="text" class="form-control message_input" onclick ="var self = this; setTimeout(function(){self.value=''}, 50)" placeholder="введите текст" name="goodss" autocomplete="off" >
<iframe name="myIFR" style="display: none"></iframe>
</form>   
<span class="input-group-btn" >
<button  class="btn btn-secondary send_message" type="button"><i class="fa fa-send"></i><span class="glyphicon glyphicon-send"></span></button>
</span>
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 23.08.2019, 11:33
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,180

Сообщение от teplov
Есть чат,по кнопке send в чат отправляется пустое сообщение как от этого избавиться?
Добавьте к полю ввода атрибут required

Сообщение от teplov
<button  class="btn btn-secondary send_message" type="button">
Должно быть значение submit у атрибута type
<button  class="btn btn-secondary send_message" type="submit">
которое по-умолчанию можно пропустить. Кнопка должна находиться внутри формы. Таймер можно удалить.

Также вместо <i class="fa fa-send"></i><span class="glyphicon glyphicon-send"></span> можно указать просто текст. Тип текст можно не указывать.

<div class="input-group">
	<form target="myIFR" action="" name="order">
		<input id="text" class="form-control message_input" onclick="this.value='';" placeholder="введите текст" name="goodss" autocomplete="off" required>
		<iframe name="myIFR" style="display: none"></iframe>
		<span class="input-group-btn">
			<button class="btn btn-secondary send_message">Send</button>
		</span>
	</form>
</div>

Последний раз редактировалось Malleys, 23.08.2019 в 11:47.
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2019, 11:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,865

Сообщение от Malleys
Кнопка должна находиться внутри формы
Не обязательно, ее, и как любые поля формы, можно размещать вне тега form. С тегом формы поля связываются просто, посредством атрибута form.
Ответить с цитированием
  #4 (permalink)  
Старый 23.08.2019, 12:02
Интересующийся
Отправить личное сообщение для teplov Посмотреть профиль Найти все сообщения от teplov
 
Регистрация: 23.08.2019
Сообщений: 13

Немного не так видимо изложил свою проблему ,у меня в чате появляется сообщение даже если проверку ввода в поле включить,то есть оставить одну кнопку сенд и по ней можно чат заспамить пустыми сообщениями...
Ответить с цитированием
  #5 (permalink)  
Старый 23.08.2019, 12:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 26,828

teplov,
а на сервере фильтровать пустые сообщения?
Ответить с цитированием
  #6 (permalink)  
Старый 23.08.2019, 12:09
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,180

laimas, 👌 👍

В примере атрибут form не использовался (и на самой форме нет атрибута id), поэтому я решил, что там неправильно закрыт элемент.
Ответить с цитированием
  #7 (permalink)  
Старый 23.08.2019, 12:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,865

Сообщение от рони
на сервере фильтровать пустые сообщения?
Даже без вопросов, без этого никакая проверка на клиенте не поможет. )
Ответить с цитированием
  #8 (permalink)  
Старый 23.08.2019, 12:11
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,180

Сообщение от teplov
Немного не так видимо изложил свою проблему ,у меня в чате появляется сообщение даже если проверку ввода в поле включить,то есть оставить одну кнопку сенд и по ней можно чат заспамить пустыми сообщениями...
Код, который обрабатывает отправку... там посмотрите, чтобы пустые сообщения не вставлялись.

Обычно то, что вы отправили вам не нужно сразу вставлять в чат. Нужно чтобы сервер всем прислал текст, включая вас. (Только у вас он будет отображаться как будто вы отправитель) Тогда вы точно будете уверены, что текст был отправлен, и соответственно только тогда можно очистить поле ввода (Поскольку вы получили ответ от сервера). А если сообщение не было отправлено, то и текстовое поле не нужно очищать (Поскольку его придётся вводить заново и ещё это создаёт ложное впечатление, будто бы текст был отправлен!)

Сообщение от рони
а на сервере фильтровать пустые сообщения?
А зачем вообще пустые сообщения отправлять?

Последний раз редактировалось Malleys, 23.08.2019 в 12:22.
Ответить с цитированием
  #9 (permalink)  
Старый 23.08.2019, 12:15
Интересующийся
Отправить личное сообщение для teplov Посмотреть профиль Найти все сообщения от teplov
 
Регистрация: 23.08.2019
Сообщений: 13

Вот я и не знаю как на сервере отфильтровать...чат на сокетах вот код скрипта чата
var getMessageText, sendMessage, Message;
Message = function (arg) {
    this.text = arg.text, this.message_side = arg.message_side;
    this.draw = function (_this) {
        return function () {
            var $message;
            var json = JSON.parse(_this.text);
            alertChat();
            return createMessage(json.text, json.name, json.photo, _this.message_side);
        };
    }(this);
    return this;
};
getMessageText = function () {
    var $message_input;
    $message_input = $('.message_input');
    return $message_input.val();
};
sendMessage = function (text, message_side) {
    var $messages, message;
    if (text.trim() === '') {
        return;
    }
    $messages = $('.messages');
    message = new Message({
        text: text,
        message_side: message_side
    });
    message.draw();
    return $messages.animate({scrollTop: $messages.prop('scrollHeight')}, 300);
};

function createMessage(text, name, photo, message_side){    
    $message = $($('.message_template').clone().html());    
    if(message_side==="left"){
        $message.find('.text_wrapper').removeClass("pull-left").addClass("pull-right");
        $message.find('.text_wrapper').removeClass("alert-info").addClass("alert-warning");
        $message.find('.name').removeClass("label-info").addClass("label-warning");
        $message.find('.avatar').removeClass("pull-right").addClass("pull-left");
    }
    $message.find('.text').html(text);
    $message.find('.name').html(name);
    $message.find('.photo').attr('src', photo);
    $('.messages').append($message);
    $message.addClass('appeared');
}
Ответить с цитированием
  #10 (permalink)  
Старый 23.08.2019, 12:27
Интересующийся
Отправить личное сообщение для teplov Посмотреть профиль Найти все сообщения от teplov
 
Регистрация: 23.08.2019
Сообщений: 13

Вот именно что пустые сообщения не нужны,получается пользователь жмет Enter и в чат летят пустышки,а где и что зафильтровать я не пойму,все перепробовал,но видимо не хватает у меня на старости лет ума (((
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запретить ввод текста в input snizhok Элементы интерфейса 41 07.11.2016 12:11
Система всплывающих сообщений ruslan_mart Ваши сайты и скрипты 32 27.05.2015 21:28
Как запретить ввод пустой строки в promtp? Zuko Events/DOM/Window 2 07.04.2015 20:13
Скрипт интересность сообщения (like unlike) useruser jQuery 2 21.06.2014 19:39
Резиновые дивы с прокруткой Java Script Mary-Jay Элементы интерфейса 10 24.07.2013 16:51