Bootstrap 3:动态表单,从浏览器插入其他textarea字段

时间:2014-09-15 14:38:55

标签: jquery forms dynamic meteor twitter-bootstrap-3

我正在使用Meteor 0.9.1 / 帐号密码/ 帐户-ui / 铁:路由器/ mizzao:自举-3

我的目标:让用户构建调查问卷并将其保存到用户个人资料中。

特点:

  1. 一个按钮,用于呈现另一个textarea,供用户编写另一个问题。
  2. 将所有问题保存到用户中'按下'保存'按钮。
  3. 使用以下代码,我可以从输入ID' question1'中检索数据。并使其可用于我需要帮助编写的方法函数。

    HTML:

    <template name="questionnaire">
    <form class="form-horizontal" role="form" id="createquestion">
        <div class="form-group form-group-lg">
            <label class="col-sm-2 control-label" for="question" >Question</label>
            <div class="col-sm-10">
                <input  class="form-control" type="text" id="question1" value="" placeholder="type your question here..."/>
            </div>
        </div>
        <button type="button" class="btn btn-default">+ another question</button>
        <input  type="submit" value="save">
    </form></template>
    

    client.js:

    Template.questionnaire.events({
    'submit form': function(e) {
        e.preventDefault();
        var qdata = {
            question: $(e.target).find('#question1').val()
        }
        Meteor.call('insertQdata', qdata);
    } });
    

    您能否建议如何将所有问题保存到一系列字段中?问题&#39;用户个人资料?

    谢谢

1 个答案:

答案 0 :(得分:0)

看看autoform:https://atmospherejs.com/aldeed/autoform。它内置了引导支持,所以一切都会很好看!

您可以像这样定义架构:

questionSchema = new SimpleSchema({
    questions: {
        type: [String],
        label: "Question"
    }
});

然后使用类似下面的代码在某处插入表单(查看autoform docs以获取更多信息):

{{#autoForm schema=questionSchema id="someId" type="method" meteormethod="insertData"}}
{{> afQuickField name="questions"}}
{{/autoForm}}

然后最后在您的流星方法中执行以下操作:

insertData: function(doc){
    Meteor.user().questions = doc.questions;
}

这应该做的工作没有太多麻烦添加额外的按钮。我还没有对代码进行测试,所以如果遇到问题,请发表评论。

希望这有帮助。