2016-03-03 39 views
0

我有一個文本框,我想替換匹配的單詞。jquery查找單詞的一部分,並更改爲完整的一個

例如:找到@jo@j@jos =改變@josh

我想:

$(document).on("click", ".addname", function() { 

var user= $(this).attr('title'); 
var word='/@'+user+'(\w+)/ig'; // REGEX - eg: find @j 

var comment=$("#comment").val(); 
var p = comment.match(word); 

alert(p); 

var username= $(this).attr('data-id'); 
$("#comment").val($("#comment").val().replace(p, username)); 

}); 

HTML:

<textarea id='comment'>this is a test - @j and @ma</textarea> 

<br><br> 
<span class='addname' title="j" data-id=josh>josh</span> 
<br><br> 
<span class='addname' title="ma" data-id=marie>marie</span> 

var p是空...什麼是錯的?

https://jsfiddle.net/b8skny1t/

+1

你想要這個HTTPS://jsfiddle.net/b8skny1t/2/ –

+0

@AnoopJoshi哦,是的,它是完美的! –

+1

我已將它添加爲答案。接受它,如果它幫助你:) –

回答

1

我認爲你需要使用RegxP添加動態正則表達式,

$(document).on("click", ".addname", function() { 
    var user = $(this).attr('title'); 
    var word = '@' + user; // REGEX - eg: find @j 
    var rx = new RegExp(word, 'ig'); 
    var comment = $("#comment").val(); 
    var p = comment.match(rx); 
    var username = $(this).attr('data-id'); 
    $("#comment").val($("#comment").val().replace(p, username)); 

}); 

Fiddle

3

是否有必要使用 '正則表達式'? 你可以使用

var word='@'+user; 
1

它是因爲你使用的正則表達式。

嘗試這樣:

$(document).on("click", ".addname", function() { 

var user= $(this).attr('title'); 
var comment=$("#comment").val(); 
var re = new RegExp("^@"+user, "i"); 
var match = re.test(comment); 
if(match){ 
var username= $(this).attr('data-id'); 
$("#comment").val($("#comment").val().replace(comment, username)); 
} 
}); 
相關問題