2015-04-28 64 views
0

我想制作一个Insert Link按钮。以下是我想出了:如何使用jQuery将超链接插入文本?

$(document).ready(function(){ 
function HyperLink(elementID, openTag, closeTag) { 
    var textArea = $('#' + elementID); 
    var len = textArea.val().length; 
    var start = textArea[0].selectionStart; 
    var end = textArea[0].selectionEnd; 
    var selectedText = textArea.val().substring(start, end); 
    var replacement = openTag + selectedText + closeTag; 
    textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len)); 
} 

$('#btnHyperlink').click(function() { 
    HyperLink("id_description", "<a>", "</a>"); 
}); 
}); 

以上snippent包含了文本与<a>...</a>,但是我不知道如何插入HREF的文字。

感谢您的帮助。

注:

我想链接动态地添加到文本,这个按钮是要在一个简单的文本编辑器来使用。

+0

你在哪里得到的HREF值? – epascarello

+0

@epascarello它由用户在输入栏/窗口中提交。 – Jand

+0

因此,当您构建超链接时,通过它? – epascarello

回答

1

那么怎么样:

$('#btnHyperlink').click(function() { 
    var href = prompt("Insert url"); 
    if(href != "" && href != null) 
    { 
     HyperLink("id_description", href); 
    } 
}); 

而且功能:

function HyperLink(elementID, url) { 
    var textArea = $('#' + elementID); 
    var len = textArea.val().length; 
    var start = textArea[0].selectionStart; 
    var end = textArea[0].selectionEnd; 
    var selectedText = textArea.val().substring(start, end); 
    var replacement = $('<div/>').append(
     $('<a/>').attr('href', url).html(selectedText) 
    ).html(); 
    textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len)); 
} 

编辑

似乎串联的a标签为一个字符串只给出网址,所以我把它包成一个div并提取其内容输出为一个字符串。

编辑2 似乎我复制了错误版本的代码。抱歉。这里的的jsfiddle:

http://jsfiddle.net/rok1ev0g/

+0

关闭,但是这会删除选定的文本并插入网址。 – Jand

+0

请看我编辑的答案。 – Eagle

+0

无法正常工作。请先在http://jsfiddle.net/中尝试。 – Jand

1

你可以尝试这样的:

$('#id_description').html('<a href="http://www.google.com">Google</a>'); 

JSFIDDLE DEMO

不知道这是你在找什么,但这里有云:

var field = "http://www.google.com" 
$(document).ready(function() { 
    $('.id_description').each(function() { 
     this.innerHTML += ' <a href=" ' +field + '">Google</a>'; 
    }); 
}); 

JSFIDDLE DEMO

+0

)对,但我需要通过输入窗口动态添加链接到文本。 – Jand

+0

@Randi: - 更新了我的答案。这是你正在寻找什么? –

+0

不幸的是不是·我想要的基本上是一个功能性的“插入链接”按钮,你可以在任何文本编辑器中找到这个按钮,就像在这里。 – Jand

0

您可以通过在JavaScript这样做给的东西href

element.href = "url"; 

在jQuery中您可以使用:

element.attr('href', 'url'); 
0

尝试使用jQuery包裹()

$("#id_description").wrap('<a href="path"></a>'); 
0

尝试:

<span class="linkable">Click to insert link</span>

$('.linkable').click(function(){ 
    var text = $(this).html(); 
    var link = $("<a>", { 
      href: "http://google.com" 
     }).html(text); 
    $(this).replaceWith(link); 
}); 

JSFiddle

0

Maybe this?

$("textarea").on("select", function(){ 
    var start = this.selectionStart; 
    var end = this.selectionEnd; 

    var text = this.innerHTML.substring(start, end); 
    var link = $("#user_link").val(); 

    var new_link ="<a href='"+link+"' target='_blank'>"+text+"</a>"; 


    $(this).after(new_link); 
}); 
+0

嗯,我希望用户让用户选择文本的任何部分,并用任意的随机链接将其包含在内,就像你在这里可以做到的一样 – Jand

+0

@Randi立即尝试。 – 2015-04-28 13:29:56

+0

正如我所说的,用户应该能够插入任何链接。 – Jand

相关问题