質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1512閲覧

JavaScriptで投稿のカーソル位置にボタンクリックでタグを挿入したいです。

makoto-n

総合スコア436

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/12/07 11:25

投稿サイトの拡張をしたいです。
リッチエディタを組み込みたいのですが、CDNが見つからなかったのでJavaScriptでつくることにしたのですが、
カーソル位置を指定してもボタンをクリックするときにカーソル位置が0になってしまいます。
指定した位置にタグを追加するにはどうすればいいでしょうか?

JavaScript

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<title>サンプル</title> 6<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 7<script> 8 function getRangeIndex(s){ 9 var v = document.getElementById("view"); 10 v.innerText = "選択範囲のカーソル位置は、" + s + "です。"; 11 }; 12 13 $(function(){ 14 var s = $('#txt1').get(0).selectionStart; 15 let inStr = String("<br>"); 16 console.log(s); 17 18 $('#blueClick').click(() => { 19 let txtS = String($('#txt1').val().slice(0, s)); 20 let txtE = String($('#txt1').val().slice(s)); 21 console.log(s); 22 console.log(txtS); 23 console.log(txtE); 24 25 joinTxt = txtS + inStr + txtE; 26 $('#txt1').val(joinTxt); 27 console.log(joinTxt); 28 }); 29 }); 30</script> 31</head> 32<body> 33 34 <input type="text" id="txt1" onkeyup="getRangeIndex(this.selectionStart);"> 35 <p id="view"></p> 36 <button id="blueClick">改行</button> 37 38</body> 39</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

テキストボックスは1行入力しかできないので改行したいならテキストエリアにするとよいでしょう

sample

javascript

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $('#blueClick').on('click',function(){ 5 var v= $('#ta1').val(); 6 var selin = $('#ta1').prop('selectionStart'); 7 var selout = $('#ta1').prop('selectionEnd'); 8 var v1=v.substr(0,selin); 9 var v2=v.substr(selin,selout-selin); 10 var v3=v.substr(selout); 11 $('#ta1') 12 .val(v1+v2+"\n"+v3) 13 .prop({ 14 "selectionStart":selin, 15 "selectionEnd":selin+v2.length 16 }) 17 .trigger("focus"); 18 }); 19}); 20</script> 21<textarea id="ta1"> 2211111111111 2322222222222 2433333333333</textarea><br> 25<input type="button" id="blueClick" value="改行">
  • カーソル位置で改行
  • テキストエリアの一部を選択していた場合選択の後ろで改行し、選択状態は確保

投稿2018/12/07 11:48

編集2018/12/07 12:15
yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makoto-n

2018/12/07 12:16

なるほど、 ありがとうございます。
yambejp

2018/12/07 12:17

テキストエリアのサンプルをつけてあるので参考にしてください
makoto-n

2018/12/07 17:08

prop('selectionStart')が必要だったのですね ありがとうございました。 Qiita拝見しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問