2012-07-07 65 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

相關問題