2015-11-21 59 views
0

我正在使用我在教程中找到的腳本。腳本的目的是爲了在facebook和twitter上有類似的內容,您可以在輸入@符號後輸入名稱。然後彈出一個下拉菜單並列出名稱。空格鍵在運行javascript函數時導致不需要的文本

該腳本運行良好。問題在於,如果用戶需要開始輸入不僅僅是名字(爲了進一步縮小結果),他們在輸入姓氏之前自然地輸入姓氏。您目前還不能看到問題,並且名稱不斷縮小,下拉/彈出窗口仍然正確。一旦你點擊你正在尋找的人的鏈接,它會將該玩家作爲鏈接正確插入到我的textarea中,但它也包括鏈接外部的姓氏的前幾個字母。

如果鍵入像這樣,然後單擊彈出的名字正常工作:@fname

當輸入這樣不工作:@fname LNA

結果將顯示「FNAME LNAME」,在彈出像它應該是什麼,但點擊時插入我的textarea的是,像這樣..

lna<ahref>afname lname</a> 

(該AHREF實際上並沒有顯示只是把那裏的例子。

這裏是我正在使用的腳本的工作演示的鏈接。

http://demos.9lessons.info/tagfriends.html

如果你去那裏和類型在搜索框中@sri,然後繼續在彈出的第一個名字打字,按空格鍵,然後開始鍵入的是姓氏的前幾個字母。然後點擊名稱。你會明白我的意思。

這裏是我相信錯誤可以修復或編輯的代碼。我已經搜索並尋找解決方案,但找不到任何東西。我想過禁用空格鍵,但我需要繼續工作。

<script type="text/javascript"> 

$(document).ready(function() 
{ 

var start=/@/ig; 
var word=/@(\w+)/ig; 

$("#contentbox").live("keyup",function() 
{ 
var content=$(this).text(); 
var go= content.match(start); 
var name= content.match(word); 
var dataString = 'searchword='+ name; 

if(go.length>0) 
{ 
$("#msgbox").slideDown('show'); 
$("#display").slideUp('show'); 
$("#msgbox").html("Type the name of someone or something..."); 
if(name.length>0) 
{ 
$.ajax({ 
type: "POST", 
url: "boxsearch.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 
$("#msgbox").hide(); 
$("#display").html(html).show(); 
} 
}); 

} 
} 
return false(); 
}); 


$(".addname").live("click",function() 
{ 
var username=$(this).attr('title'); 
var old=$("#contentbox").html(); 
var content=old.replace(word,""); 
$("#contentbox").html(content); 
var E="<a href=''>"+username+"</a>"; 
$("#contentbox").append(E); 
$("#display").hide(); 
$("#msgbox").hide(); 
$("#contentbox").focus(); 
}); 

}); 
</script> 

回答

0

你可能希望var word正則表達式匹配的空間爲好,通過添加\ S:

這應該讓你的var content=old.replace(word,"");呼叫匹配 「FNAME LNAME」 的問題。

通過該更改,您可能還需要在調用$ .ajax時用dataString中的「%20」替換空格。我不記得是否jQuery的這是否爲你自動:

data: dataString.replace(/\ +/g, '%20'),

+0

這完美的作品謝謝!!!!在調用ajax時,我不必用「%20」替換空格。 – user3765759

相關問題