试图使用javascript将文本区域中的链接替换为超链接会导致数组错误
Trying to replace link with hyperlink in textarea using javascript gives array error
每当用户在文本区域中键入并在其中发布某个链接时,我都会立即将其更改为链接,就像stackoverflow.com在任何人键入时所做的那样https://stackoverflow.com/?q=and+消息+继续+直到+结束,但每当有人传递任何非链接文本时,它都会返回到文本外观。。。
这是我的尝试,我已经做了什么,在我把它发布到下面之前,让我告诉你我不是javascript学生,我只是试图剪切粘贴,使用我的其他编程逻辑,并试图实现它。所以,无论何时回复,都要考虑我没有扎实的javascript背景。
感谢
我的尝试如下:-
function isUrl(s) {
var regexp = /(ftp|http|https):'/'/('w+:{0,1}'w*@)?('S+)(:[0-9]+)?('/|'/(['w#!:.?+=&%@!'-'/]))?/
return regexp.test(s);
}
$('#status').keyup(function() {
var value = $("#status").val();
var words = value.split(" ");
for (var i=0;i<words.length;i++)
{
var n = isUrl(words[i]);
if (n) {
var deadLink = '<a href="'+words[i]+'" target="_blank" rel="nofollow">'+words[i]+'</a>';
words[i].replace(words[i], deadLink);
}
}
});
这不起作用,我在这里没有得到任何错误,但当我在没有数组索引的情况下使用它时,如下所示,我得到了数组错误:-
for (var i=0;i<words.length;i++)
{
var n = isUrl(words);
if (n) {
var deadLink = '<a href="http://google.com/search?q='+words+'" target="_blank" rel="nofollow">'+words+'</a>';
words.replace(words, deadLink);
}
}
有什么办法解决它吗?
感谢
主要问题:
- 您的
replace()
调用没有效果,因为您没有将它们分配给任何内容 - 您没有使用生成的
words
数组,只是处理了它。。。什么都没有
我做了一些更改:
-
添加一行以转义键入的文本:
var value = $('<div/>').text(nonEscapedValue).html();
-
更改了
replace()
的行以分配replace()
的结果:words[i] = words[i].replace(words[i], deadLink);
-
最后添加一行,将处理后的数组放入
div
:$("#myResultDiv").html(words.join(" "));
最终代码(请在此处查看jsfiddle演示):
function isUrl(s) {
var regexp = /(ftp|http|https):'/'/('w+:{0,1}'w*@)?('S+)(:[0-9]+)?('/|'/(['w#!:.?+=&%@!'-'/]))?/;
return regexp.test(s);
}
$('#status').keyup(function() {
var nonEscapedValue = $("#status").val();
// added line below to escape typed text
var value = $('<div/>').text(nonEscapedValue).html();
var words = value.split(" ");
for (var i=0;i<words.length;i++)
{
var n = isUrl(words[i]);
if (n) {
var deadLink = '<a href="'+words[i]+'" target="_blank" rel="nofollow">'+words[i]+'</a>';
// changed line below to assign replace()'s result
words[i] = words[i].replace(words[i], deadLink);
}
}
// added line below to put the result in to the div #myResultDiv
$("#myResultDiv").html(words.join(" "));
});
希望这能帮助你实现目标。
相关文章:
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 用超链接替换URLS
- 使用JavaScript从超链接加载时的默认下拉值
- Hammer.js阻止在Android Webview中点击超链接
- 将超链接添加到“;标题“;标记文本
- 用Javascript按钮替换Javascript超链接
- 在JavaScript / jQuery中用活动超链接替换粘贴的链接
- 替换超链接默认操作以加载 AJAX 请求
- Javascript 正则表达式替换为超链接
- 如何用JavaScript/jQuery替换和缩短一段文本中的超链接
- 替换超链接href中的匹配文本
- javascript将[]中的文本替换为超链接
- 试图使用javascript将文本区域中的链接替换为超链接会导致数组错误
- Jquery,将一个超链接替换为另一个超链接
- Javascript将网络位置的所有实例替换为超链接
- 替换按钮与超链接,合适的JQuery调用
- 超链接替换文本
- JQuery删除超链接并替换为文本
- 如何编写 javascript 正则表达式以将这种格式的超链接 [*](*) 替换为 html 超链接