プロが教えるわが家の防犯対策術!

下記のコードは、PCキーボード操作で[alt]+[z]キーで、inputフォームにある文字列のカーソルがある部分に、文字列(Hello!)を挿入するコードを書きました。例えば、inputフォームにある文字列のaaaa|aaaaaaaaa で 5番目にカーソル( |)があるときに、[alt]+[z]キーを押すと、aaaaHello!aaaa| となります。挿入に関しては、問題ありませんが、挿入し終えた後には、カーソルが文字列の最後に移動してしまいます。これを挿入後は、挿入した文字列の後ろにくるようにしたいのですが、どのうよにすればよいでしょうか?  (このように⇒ aaaaHello!|aaaa)


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<style>
</style>
<script>

document.addEventListener("keydown", function(e){

if(e.altKey == true && e.keyCode == 90){
if(e.target.nodeName == "INPUT" && e.target.type == "text"){

var sentence = e.target.value;
var len = sentence.length;
var pos = e.target.selectionStart;
var before = sentence.substr(0, pos);
var word = 'Hello!';
var after = sentence.substr(pos, len);
sentence = before + word + after;
e.target.value = sentence;

}
}

}, false);
</script>
</head>
<body >
<input type="text" name="" value="aaaaaaaaaaaaaaaaaaaa"><br>
</body>
</html>

A 回答 (1件)

e.target.value = sentence;


の下の行に以下2行追加して下さい
e.target.selectionStart=(before+word).length;
e.target.selectionEnd=(before+word).length;
    • good
    • 1
この回答へのお礼

ありがとうござまいす。
とても勉強になります。

お礼日時:2017/11/17 23:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!