こんにちは。hacknoteのr.katoです。
以前の記事でSimpleMDEの使用方法を紹介しましたが、SimpleMDEへ入力した情報を取得するのに手間取ったので、その方法を紹介していきます。
SimpleMDEの仕組み
そもそもSimpleMDEはtextareaタグで作った文字入力エリアにjavascriptでSimpleMDEを適応させています。
そのためユーザー側で使用しないtextareaはstyle=”display: none;”となり、非表示となります。
そして、公式のGithubによると
simplemde.value();
を使えばSimpleMDEに入力した情報を取得できるとのことでしたが、うまく動作しなかったため別の方法を使用しました。
実際に作ったコードとSimpleMDE
今回は以下のコードを用意しました。
ローカル環境などで、以下のコードをコピーしてindex.htmlなどのhtmlファイルに保存すれば、
この記事と同じくSimpleMDEに入力した情報を取れる様になっています。
反映するボタンをクリックすると、SimpleMDEに入力した情報を非表示になっている、textareaに出力され、その情報を表示されているtextareaにコピーされます。
<head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> </head> <body> <input type="button" value="反映させる" onClick="code_save()"/><br><br> <textarea id="content" rows="8" cols="40"></textarea> <textarea id="editor" rows="8" cols="40"></textarea> <link rel="stylesheet" href="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css"> <script src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script> <script> var simplemde = new SimpleMDE({ element: document.getElementById("editor"), toolbar: ["bold","strikethrough","quote","unordered-list","ordered-list","link","image","horizontal-rule", "table","preview","side-by-side","fullscreen"], spellChecker: false }); function code_save(){ simplemde.codemirror.save(); $test2.val($test1.val()); } var $test1 = $('#editor'); var $test2 = $('#conten'); </script> </body>
simplemde.codemirror.save();
を使って、非表示になっているtextareaに入力情報をコピーし、
その後、
$test2.val($test1.val());
でもう一つの表示されているtextareaにコピーしています。