2011-09-03 125 views
0

我有一個訂單提交表單,我想用相應的HTML鏈接替換URL文本。我在Stackoverflow上找到下面的代碼:用URL-s替換文本鏈接JavaScript

get_url = function() { 
    var urls = document.getElementById('w_descr').firstChild; 
    urls.nodeValue = replaceURLWithHTMLLinks(urls.nodeValue); 
} 

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp,"<a href='$1'>$1</a>"); 
} 

我在點擊表單提交按鈕時調用了get_url()函數。它工作正常。但提交的訂單具有編輯功能。如果您編輯訂單並再次點擊提交按鈕,該功能將再次工作,並將複製現有鏈接。

有人能幫我弄清楚我該如何防止這種情況發生?我的意思是 - 如何修改上面的腳本,以不復制已經在HTML表單中的鏈接。

在此先感謝。

回答

1

總是存儲文本「純文本」(不含鏈接),並且只在輸出文本時才添加鏈接以供顯示。

輸出文本進行編輯時,輸出'普通'文本。

+0

目前沒有辦法做到這一點。數據存儲在數據庫中,如果我在document.load上的所有文本上調用該函數,它將完成工作 - 用HTML鏈接替換文本,但鏈接仍然看起來像HTML代碼,而不是鏈接。沒有辦法檢查鏈接是否被包圍,而不是調用該函數? – cycero

+0

我的答案是,你應該將數據作爲純文本(不含鏈接)存儲在數據庫中。在document.load上添加鏈接本身並不是不可能的:http://arnout.engelen.eu/files/dev/autolink.html。你當然也可以做到服務器端 - 這似乎更適合我。 –