2013-06-26 41 views
0

我试图做类似的事情。当按下CTRL + B时​​,它应该在所选文本周围添加[b]和[/ b]。我可以利用这段JavaScript代码获取选中文本:Get the Highlighted/Selected text当键被按下时,替换myBB论坛(textare)上的字符串 - jQuery

不过......当我尝试这样的事:

$(document).ready(function(){ 
    $('#message').on('keydown',function(e) { 
     key = e.which; 
     if(e.which == 39){ 
      str = getSelectionText(); 
      $("#message").replace(str,"[b]"+str+"[/b]"); 
     } 
    }) 
}); 

将无法​​正常工作。它会说“Object [object Object]没有方法'replace'”,这很奇怪,因为当我做alert(str)的时候;它会显示选中的文字。

谁能告诉我为什么?键39是右箭头键。

在此先感谢

+0

顺便说一句。我只是使用39(右箭头键)作为测试。 – MortenMoulder

回答

2

这是一个jQuery对象,这就是为什么.replace不会工作。您需要添加.val()以获取实际值,然后您必须将其设置为:

var value = $("#message").val(); 
value = value.replace(str,"[b]"+str+"[/b]"); 
$("#message").val(value); 
+0

工作就像一个魅力。谢谢。有时我对Javascript和jQuery感到困惑! – MortenMoulder