Отправляется [object HTMLTextAreaElement] вместо переменной

const chatid = 'айди (вырезан)';
const token = 'токен (вырезан)';
const btn = document.getElementById('btn');
const pre = document.getElementById('console');
var name = document.getElementById('user-name');
const text =  "Name:" + name;
btn.onclick = function (){
  $.ajax({
    type: 'POST',
    url: `https://api.telegram.org/bot${token}/sendMessage?chat_id=${chatid}`,
    data: 'parse_mode=HTML&text=' + encodeURIComponent(text),
  })
  .done((data) => pre.innerHTML = JSON.stringify(data, null, 2))
  .fail((err) => console.error('error', err));
}
<div class="application"><form>
                <textarea name="user_name" id="user-name" class="user-name" placeholder="Your name" value="user-name" required></textarea>
                <textarea name="user_contact" id="user-contact" class="user-contact" placeholder="Your email address" required></textarea>
                <textarea name="user_message" id="message" class="message" placeholder="Message"></textarea>
                <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                <button id="btn" class="send">to send</button></form>
            </div>

Ответы (2 шт):

Автор решения: Iurii

В переменную "name" вытащите из объекта value.

var name = document.getElementById('user-name').value;

Вы уверены, что для имени и емайла нужно использовать textarea? Может взять input?

→ Ссылка
Автор решения: Aleksandr Belous

Дата отправляется некорректно, потому что переменная "name" содержит сам html элемент, а не введенный в него текст. Вам нужно обратиться к полю value этого объекта. В js - html узлы это объекты.

var name = document.getElementById('user-name').value;

Далее в переменной "text" вы будете складывать корректно строку + строку и данные будут верны.

→ Ссылка