2017-10-20 1 views
1

私はNodejs(そして一般的にはコーディング)を使い慣れていません。私は小さなコンテンツ管理システムを構築しようとしています。潜在的なエンドユーザーは、ボタンをクリックしてブログに投稿を送信する前に、コンテンツのスタイルを太字、斜体、ハイパーリンクなどにできるようにしたいと考えています。一種の種類、私はここでは、このQuillJsとbody-parserでフォームを送信するには?

を入力していて、私はStackOverflowの上で見ていツールバーには、私はクイルのガイドを読んだ後、これまでに得たものである:

form.ejs

<style> 
#editor { 
    height: 300px; 
} 

</style> 

<!-- Include Quill stylesheet --> 
<link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet"> 

<!-- Create the toolbar container --> 
<div id="toolbar"> 
    <button class="ql-bold">Bold</button> 
    <button class="ql-italic">Italic</button> 
</div> 

<form action = '/blog' method = 'POST'> 
    <!-- Create the editor container --> 
    <input type = 'text' name = 'title' placeholder = 'title'> 
    <label for="body">About me</label> 
    <input name="body" type="hidden"> 
    <div id="editor"> 
    <p>I am at my wit's end. Stackoverflow is my last hope</p> 
    </div> 
    <button type="submit">Submit</button> 

</form> 


<!-- Include the Quill library --> 
<script src="https://cdn.quilljs.com/1.0.0/quill.js"></script> 

<!-- Initialize Quill editor --> 
<script> 
    var editor = new Quill('#editor', { 
    modules: { toolbar: '#toolbar' }, 
    theme: 'snow' 
    }); 

    var form = document.querySelector('form'); 
    form.onsubmit = function() { 
    console.log("hey") 
    // Populate hidden form on submit 
    var body = document.querySelector('input[name=body]'); 
    body.value = JSON.stringify(quill.getContents()); 

    console.log("Submitted", $(form).serialize(), $(form).serializeArray()); 

    }; 

</script> 

app.jsファイル

var app    = require('express')(), 
    mongoose  = require('mongoose'), 
    Blog   = require('./model/blog'), 
    bodyParser  = require('body-parser'); 

mongoose.connect("mongodb://localhost/quill_demo", {useMongoClient:true});  
app.set('view engine','ejs'); //EJS WILL BE THE DEFAULT FILE THAT DISPLAYS THE FRONT-END DATA 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended:true})); // retrieve text from submitted forms from the EJS files. 

//Add new blog to the database 
app.post('/blog', function(req, res){ 
    var myPost = { 
     title:req.body.title, 
     body: req.body.body 
    }; 
    Blog.create(myPost, function(err, newBlog){ 
     if(err){ 
      console.log(err); 
     } else { 
      console.log("New Blog has been added"); 
      newBlog.save(function(err, savedBlog){ 
       if(err){ 
        console.log(err); 
       }else { 
        console.log(savedBlog); 
        res.redirect('/blog'); 
       } 

      }); 
     } 
    }); 

}); 

私はsubmitをクリックした後にデータベースをチェックします。 「タイトル」フィールドは正常に動作しています。しかし、 "body"フィールドには何も追加されていません。

私はいくつかの部分が欠けているようです。助けていただければ幸いです。誰かがコード内に欠けている部分を追加するだけであれば、私は気にしません。後でその手順から学びます。

P.S.私はCSの学位を持っていません。私自身で学習する。だから、できるだけ素人の言葉であなたの応答を保つ

答えて

0

私はそれを考え出した!

私はスクリプトをこれに変更し、それは私のためのトリックでした。フォームが送信されるときに関数が呼び出されます

<script> 
    var editor = new Quill('#editor', { 
     modules: { toolbar: "#toolbar" }, 
     theme: 'snow' 
    }); 


    function formatField(){ 
    var editor = document.querySelector(".ql-editor").contentEditable = false; 
    var clipboard = document.querySelector(".ql-clipboard").contentEditable = false; 
    var bar = document.querySelector("input[type=text]").type="hidden" 
    var p = document.querySelector("#editor"); 
    var myInput = document.querySelector("input[name=about]"); 
    myInput.value = p.innerHTML; 
    } 


</script> 
関連する問題