2015-04-28 63 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

相關問題