2011-10-12 49 views
2

我有一個非常簡單的問題。我只想搜索textarea中是否有鏈接。搜索鏈接在Textarea從Javascript

<script type="text/javascript"> 
function valid() 
{ 
var txtt=document.forms["forma"]["txtarea"].value; 
var ss=txtt.search("href"); 
if (ss == "0"){ 
alert("You've link in your textarea! We don't allow that"); 
return false; 
} 
} 
</script> 

<form action="" method="POST" onsubmit="return valid()" name="forma"> 
<textarea name="txtarea"></textarea> 
<input type="submit" /> 
</form> 

樣本數據。我希望以上不被傳遞並返回false。

 Hi! I bookmarked your site http://www.myspamdata.com

<a href="http://myspam.com">My spam link</a> 
+1

您需要強制執行服務器上的此限制。垃圾郵件機器人根本不執行JavaScript。 – ThiefMaster

+0

@ThiefMaster - 雖然這可能是一個好建議,但低估垃圾郵件是不明智的! – Spudley

回答

0

我覺得這個解決方案足以滿足您的問題:

var txtt=document.forms["forma"]["txtarea"].value 
var ss=txtt.search('http://'); 
if(ss != -1) { 
    alert("..."); 
    return false; 
} 

你剛纔查找字符串的 「http://」。但是這個通常的解決方案有一個問題。你可以輕鬆地通過這樣的Javascript「保護」。所以你需要檢查服務器代碼中的鏈接並拒絕它們。

+0

謝謝,這個作品。實際上我的錯誤是,如果ss ==「0」,我就這樣做了。我不知道這可能是什麼,如果發現。 :D – Kimzi

+0

我很高興能幫上忙。你會如此善良,並將我的答案標記爲已接受? – styrr

+0

那麼,我應該在Khapay.com上關於StackOverFlow的博客。 Stack表示「投票需要15點聲望 (點擊此框取消)」 – Kimzi

0

您可以使用正則表達式是這樣的:

var regex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;

和驗證輸入字符串對,看看是否有指定的任何鏈接。

例如,使用搜索它:

var regex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
var exists = text.search(regex); 
+0

你的代碼實際上很好看,但這是行不通的。你需要處理它。 – Kimzi

+0

當你說它不工作,什麼不工作,你是怎麼做到的? – Saket

+0

我簡單地把它放在這裏var ss = txtt.search(「/(\ b(https?| ftp | file):\/\/[ - A-Z0-9 +&@#\ /%?=〜_ |:!。,;] * [ - A-Z0-9 + @#\ /%=〜_ |])/ I「); – Kimzi