javascript - 如何检测 url 并将其替换为 contenteditable div 中的链接?
问题描述
我想在用户每次键入时显示“google.com”,就像我们发布内容时在 facebook textarea 中一样。我是 Web 开发的新手。请帮忙!:) 此代码不起作用。:')
html:
<div data-text="true" id="textbox" contenteditable="true" style="width: 500px; background-color: blanchedalmond; outline: none;z-index:0;" aria-placeholder="true"></div>
javascript:
$('#textbox').bind("keyup",function(event) {
if(event.which == 32){
console.log($(this).text()+'out')
_text = $(this).text();
text = _text.split(/\s+/).reverse()[1];
console.log(text);
if(text.match('google.com') == 'google.com') {
console.log(text+'in');
newText = "<a href='https://www.google.com/'>" + text + "</a>";
_text = _text.replace(new RegExp(text + '$'), newText)
$(this).html(_text);
placeCaretAtEnd($(this).get(0));
}
}
});
function placeCaretAtEnd(el) {
el.focus();
if (typeof window.getSelection != "undefined"
&& typeof document.createRange != "undefined") {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
} else if (typeof document.body.createTextRange != "undefined") {
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
textRange.collapse(false);
textRange.select();
}
}
解决方案
$('#tbox').on('input', function() {
if($('#tbox').val().toLowerCase() == 'google.com'){
$('#out').text('https://google.com');
};
});
推荐阅读
- java - 在 java 中 SSLv3 被禁用但在 javamail API ssl 中有效吗?
- vb.net - 使用 TaskFactory 调用异步 Sub 时出现编译器错误
- c# - 在 C# 中创建接口时出现堆栈溢出异常
- python-3.x - 通过总结其中一列外部合并两个数据框
- javascript - JS,img.attr 常量取不到值
- c# - 从字符串转换为 Icollection Automapper
- julia - 如何将 Array{Any,1} 的元素转换为 Array{Int64,1}
- java - 无法为具有某些字符的名称发送密钥
- excel - 如何在图表标题/标题中进行引用?
- angular - 将信息从一个表单发送到另一个组件时出现问题