Как вывести ссылку в поле ввода через подсказку?

Я борюсь с этим и не могу заставить его работать. Я использую jQuery, чтобы щелкнуть ссылку, которая откроет мне подсказку. В этом приглашении я хочу, чтобы пользователь добавил URL-адрес, чтобы связать его с некоторыми другими веб-сайтами. Это отлично работает, но я не могу правильно отобразить значение подсказки в поле ввода.

The error I am getting after adding my text in the prompt is the fact that it outputs it like [Object object].

Я знаю, как это сделать в простой JS, но не в jQuery, и мне нужно jQuery.

Это мой код:

    $(".html-button").on("click", function () {
    var urls = prompt("Add a link", "http://");
    var setText = $("#post-text").val().append('<a href = "'+ urls + '"</a>'); 
// Adding prompt text into my input field
    $("#post-text").val(setText);
                            });

Я подумал, что смогу сделать это, используя append вместо innerHTML, который я бы использовал в простом JS... Может кто-нибудь помочь?

PS: желательно, чтобы якорь не выводился уже в моем поле ввода, а только после отправки сообщения, но это приятно иметь.

Обновлено: Ссылка на скрипку

может ли это работать? $("#post-text").val( $("#post-text").val() + '<a href = "'+ person + '"</a>');

GrafiCode 31.05.2019 11:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
462
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы, кажется, перепутали некоторые переменные здесь. Вы присваиваете значение ответа на приглашение переменной URL-адреса, но затем ожидаете, что оно будет в неопределенной переменной человек (предполагается, что вы использовали для этого пример из Учебника W3 Schools Tutorial (https://www.w3schools.com/jsref/met_win_prompt.asp)).

Предполагая, что ваш элемент ввода имеет идентификатор пост-текст, вы должны сделать следующее:

$("#post-text").val(urls);

Я работаю над предположением, что вы пишете URL-адрес в поле ввода, как вы предлагаете. Если вы хотите, чтобы эти теги также были в поле ввода, тогда это будет:

 $("#post-text").val('<a href = "' + urls + '"</a>');

Если вы намерены вывести его как ссылку где-нибудь, включая теги HTML «a», чтобы по нему можно было щелкнуть, вам нужно будет добавить его к соответствующему элементу (не к полю ввода) в нужном месте в DOM/ на странице.

Наконец, если вы хотите записать значение в поле после отправки формы (по какой-либо причине), вы можете сохранить его в переменной и записать при отправке или, возможно, в скрытом поле. Я не уверен, почему вы хотели бы сделать это, хотя.

Надеюсь это поможет.

Я получаю ту же ошибку. Да, я использовал человека и перепутал его там, но ошибка остается той же. Вывод: [Object object] после добавления моего текста в подсказку...

Siyah 31.05.2019 11:52

Не могли бы вы создать JSFiddle, показывающий пример того, что вы сделали? jsfiddle.net

ViniH 31.05.2019 11:54

Конечно. Вот: jsfiddle.net/g0hnrx6a/1 и на ваш вопрос: я имел в виду описание ссылки. Таким образом, отображается только описание ссылки в поле ввода, но после отправки отображается сама ссылка. Но, как я уже сказал, это приятно иметь.

Siyah 31.05.2019 11:57

Я видел, что я сделал неправильно, но все равно получаю на выходе простой текст, хотя это якорь. Можем ли мы сделать что-то вроде описания ссылки?

Siyah 31.05.2019 11:59

Вы устанавливаете возвращаемое значение селектора jQuery для текста. Что я думаю, это то, что вы только что поняли? Итак, вы хотите, чтобы текстовое поле включало теги A и тому подобное?

ViniH 31.05.2019 12:00

var setText = $("#post-text").val('<a href = "' + URL + '">' + URL + '</a>');

ViniH 31.05.2019 12:02

Давайте продолжить обсуждение в чате.

ViniH 31.05.2019 12:03

Вот небольшой пример, дающий вам представление о том, что вы можете сделать, чтобы обеспечить желаемый пользовательский интерфейс — очевидно, вы замените запись данных в ссылку на экране записью в скрытое поле или что-то в этом роде. Убедитесь, что вы не вводите какие-либо XSS или другие уязвимости, должным образом очищая пользовательский ввод. jsfiddle.net/xkombteg

ViniH 31.05.2019 12:37

Другие вопросы по теме