改行時に自動で子要素に挿入されるdiv
にclass="item"
を付けたく、いくつか方法を試したのですが、自動で挿入されるdiv
が認識されなかったり、書き換えられなかったりと悩んでいます。
どのように行えば、理想の形になるかご教授いただけると助かります。
Vue.jsおよびNuxt.js環境で行なっています。
理想
html
1<div class="form-input" contentEditable> 2 <div class="item"></div> 3</div>
方法1
JavaScript
vue
1<template> 2 <div class="form-input" id="tag" @keypress.enter="inputEnter" contentEditable="true"></div> 3</template> 4 5<script> 6 export default { 7 methods: { 8// 方法1 親要素から子要素を取得して、削除する 9 inputEnter () { 10 let ele = document.getElementById('tag') 11 console.log(ele.childNodes[1]) 12 // ログを見るとNodeLisrで`div`が存在するものの、`undefined`となり取得できない 13 } 14 } 15 } 16</script>
結果
html
1<div class="form-input" contentEditable> 2 <div class="item"></div> 3 <div><br></div> <!--これを消したいが、認識されない--> 4</div>
方法2
http://sainu.hatenablog.jp/entry/contenteditable-create-custom-htmltag
上記の記事を参考にdocument.execCommand('formatBlock', false, 'div')
を利用して書き換える方法も試してみましたが、
うまく書き換えられません。
JavaScript
vue
1tabEnter () { 2 let ele = document.getElementById('tag') 3 document.execCommand('formatBlock', false, 'div') 4 let create_ele = document.createElement('div') 5 create_ele.appendChild(ele.firstChild) 6 ele.insertBefore(create_ele, ele.firstChild) 7}
結果
html
1<div class="form-input" contentEditable> 2 <div> 3 <div><br></div> <!-- 削除されず... --> 4 <div>テキスト入力した後に改行してみた</div> 5 </div> 6</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/15 12:50