2012-07-07 66 views
0

我需要用正则表达式替换正则表达式的所有匹配,直到使用Javascript在textarea中插入位置。 例如,如果textarea中的文本是:“6名学生携带2本书到5班”,光标 放在书本上,正则表达式是/ \ d /,则应将数字6和2替换为,说,4. 我知道替换函数,我知道如何得到插入的位置,但我该如何解决这个问题? 感谢您提前提供任何帮助!使用Javascript取代textarea中的文本

回答

4
textareaClicked = function(e){ 
    var pos = e.target.selectionStart; 
    var beforeSelection = e.target.innerHTML.slice(0,pos); 
    var afterSelection = e.target.innerHTML.slice(pos); 
    var newHTML = beforeSelection.replace(/\d/g,4) + afterSelection; 
    e.target.innerHTML = newHTML; 
    e.target.setSelectionRange(pos,pos); 
}; 

document.getElementById('foo').onclick=textareaClicked; 

看到它在this jsfiddle的行动。

+0

感谢您的代码!这将适用于所有浏览器吗? – user828647 2012-07-07 07:48:00

+0

我相信'e.target'在IE8及以下版本中不起作用,请参阅http://www.quirksmode.org/js/events_properties.html。对于IE与'selectionStart'的兼容性,请参阅http://stackoverflow.com/questions/235411。为设置选择,http://stackoverflow.com/questions/1981088可能会有所帮助。其余的应该可以在所有现代浏览器中工作而无需更改。 – 2012-07-07 08:04:48

+0

感谢您的帮助! – user828647 2012-07-07 08:35:44

0

有可能是一种更优雅的方式,但我只是从文本区域复制文本,将字符串拆分为两个子字符串在插入位置(你说你知道如何找到),做替换第一个子字符串,然后将其与第二个子字符串连接起来。将其复制回文本区域,确保正确更新插入位置。

+0

感谢您的回复!我也在沿着同样的思路思考。如果没有人提出更好的解决方案,我会接受你的答案。 – user828647 2012-07-07 07:07:38

相关问题