dazle
@dazle
Хороший электрик, но в душе программист

Есть рабочий чат. При смене тега textarea на div в форме, чат перестает работать. Почему?

-Вы сразу спросите, а зачем мне менять теги ведь чат рабочий? Отвечу: для того чтобы когда ты выбрал смайл он отображался как смайл а не его путь.
Вот у меня форма:
<div class="mes effect15">
<div id="messages">
</div></div>

<form name="chatform" action="javascript:send();" method="post">
<div id="mess_to_send" placeholder="Текст сообщения" tabindex="0" contenteditable="true" ondragend="return true"></div><br>
<button type="submit" class="botto2">отправить</button>
</form>

Это файл которому передается сообщение и заносится в бд
//Функция отправки сообщения
 function send()
 {
 //Считываем сообщение из поля ввода с id mess_to_add
 var mess=$("#mess_to_send").val();
 
 $.ajax({
 type: "POST",
 url: "shablon/add_mess.php",
 data:"mess="+mess,
 
 success: function(html)
 {
 //Если все успешно, загружаем сообщения
 load_messes();
 //Очищаем форму ввода сообщения
 $("#mess_to_send").val('');
 }
 });
 }

А это что берет с базы данных и выводит в сам чат
//Функция загрузки сообщений
 function load_messes()
 {
 $.ajax({
 type: "POST",
 url: "shablon/load_messes.php",
 data: "req=ok",
 // Выводим то что вернул PHP
 success: function(html)
 {
 //Очищаем форму ввода
 $("#messages").empty();
 //Выводим что вернул нам php
 $("#messages").append(html);
 //Прокручиваем блок вниз(если сообщений много)
 var chat_scroll = $('.mes');
    chat_scroll.scrollTop(chat_scroll.prop('scrollHeight'));
 }
 });
 }
 setInterval(load_messes,3000);

Нажимаешь на отправить и ничего не происходит все что в поле ты напечатал осталась там же.
В таком виде код не рабочий, а когда я снова поставлю тег textarea все работает
<textarea type="text" id="mess_to_send" placeholder="Текст сообщения"></textarea>
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
Chefranov
@Chefranov
Новичок
var mess=$("#mess_to_send").val();
.val() - для считывания с инпутов, а .text() с дивов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
var mess=$("#mess_to_send").val();
у инпута, текстареа и прочая для форм val есть. А вот у дива не слышал. есть текст. есть иннерхтмл. вала нет
Ответ написан
Комментировать
ixon
@ixon

//Считываем сообщение из поля ввода с id mess_to_add
var mess=$("#mess_to_send").val();

Метод val в jQuery обращается к значениям тегов связанных с формой и он не может применяться к иным тегам типа div, потому что у них нет какого-то свойства значения.
The .val() method is primarily used to get the values of form elements such as input, select and textarea. When called on an empty collection, it returns undefined.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы