2012-03-07 8 views
4

マウスを使用して<textarea>のテキストを選択すると、ボタンをクリックしてシャッフル/スクランブルを行うにはどうすればよいですか?<textarea> JavaScriptを使用して選択したテキストをシャッフル

私はここで欲しいものに似たものを探しましたが、substring、、およびselectionEndを使用している人もいました。

マウスでテキストを選択すると、ボタンをクリックするとシャッフル/スクランブルされ、<textarea>の残りのテキストはそのまま残ります。

選択したテキストに対してアクションを実行したいだけです。

それは、大胆ボタンをクリックし、選択したテキストが太字になり、あなたには、いくつかのテキストに選択したときのようなリッチテキストエディタに、より似ています。

P.S. 個々の文字でシャッフルする必要があります。

編集: これを取得しました!私はちょうど選択文字列を分離する必要があった。私のコードは今動作します。これは非常に便利です - https://stackoverflow.com/a/9605191/1101391

残念ながら、以下IE 9とは<input><textarea>selectionStartselectionEndプロパティをサポートしていません。ここに私のために働いた解決策があります - https://stackoverflow.com/a/9276457/1101391

+1

それがシャッフルされなければならない方法は?言葉で、または個々の文字で? –

+2

@Michael - Sir、それは個々の文字でシャッフルされるべきです。 – vurquee

答えて

1

あなたはフルテキストにアクセスし、選択の開始と終了の部分文字列を知っています。このような何かを試してみてください:

var txtArea = document.getElementById("foo"); 
var before = txtArea.value.substr(0, txtArea.selectionStart); 
var selection = txtArea.value.substr(txtArea.selectionStart, txtArea.selectionEnd + 1); 
var after = txtArea.value.substr(txtArea.selectionEnd, txtArea.value.length); 
txtArea.value = before + scrambleThisString(selection) + after; 
+1

先生、あなたの貢献に感謝します。これはちょうど私のコードで何が間違っていたかを理解するのに役立ちました。 – vurquee

+1

'selectionStart'と' selectionEnd'はIE <9ではサポートされていないことに注意してください。 –

+1

ありがとう、サー@ティムダウン! +1を指摘してください。 http://stackoverflow.com/a/9276457/1101391からあなたのお勧めを試してみました。 – vurquee

1

あなたはID contentでテキストエリアに名前を付けるとします

var textarea = document.getElementById('content'); 
var content = textarea.value; 

var start = textarea.selectionStart; 
var end = textarea.selectionEnd; 

var before = content.slice(0, start); 
var after = content.slice(end); 
var selected = content.substring(start, end); 
selected = shuffleStringByMagic(selected); 

textarea.value = before + selected + after; 
+1

+1非常にきちんとしたコードです。 – vurquee

関連する問題