У меня есть поле ввода, где пользователям разрешено вводить текст, включая ссылки <a href>
. То, что я хотел бы сделать, - это использовать это значение как отображаемое как html, так и как обычный текст, только отображаемое содержимое каждого отображаемого тега <a href>
.replaceWith переменная
Я понял, что я могу использовать фрагмент ниже, чтобы заменить теги <a href>
их содержимым.
$("a").replaceWith(function() { return $(this).contents(); }).val();
Пример HTML:
input: <input type="text" id="input"/><br />
plain output: <div id="outputplain"></div><br />
replaced output: <div id="outputreplaced"></div><br />
Пример JS:
// simulate user input
$('#input').val('<a href="http://stackoverflow.com">me</a> and <a href="http://stackexchange.com">you</a>');
// try to render
$('#input').click(function() {
var input = $(this).val();
// html rendered
$('#outputplain').html(input);
// plain rendered
$('#outputreplaced').html(input);
$("#outputreplaced a").replaceWith(function() { return $(this).contents(); });
});
Приведенный выше пример работает, но то, что я действительно хотел бы сделать, это сохранить outputplain и outputreplaced как переменные, так что я могу отправьте их в шаблон позже. Однако я не могу понять, как сделать замену без вывода на страницу.
Я не ограничиваюсь использованием replaceWith, любое решение, которое позволяет мне лишать теги из переменной, приветствуется.
использовать $ ('a'). attr ('href', LINKHERE); –
Вы хотите получить # входное значение после replaceWith? –
Да, replaceWith должен только изменить загруженное значение, а не фактическое значение ввода (которое пользователь может захотеть настроить дальше) –