【问题标题】:append a new form and submit it when there is text in input追加新表单并在输入中有文本时提交
【发布时间】:2016-02-20 09:04:35
【问题描述】:

我想在单击创建按钮时附加填写表单,并填写输入文本以将文本附加到结果 div 中。我想使用提交输入来触发输入的完整性,并在结果 div 中显示文本时隐藏表单。但是,我发现我无法显示文本并隐藏表单。我想知道为什么我不能这样做。

代码如下:

html:

 <div id="results">
 <button type="button" id="create-group">Create Group</button>
 </div>

javascript:

var create = document.getElementById('create-group');
  create.addEventListener('click',function(e){
     addForm();
});

function addForm(){
  var form1 = $('<input type="text" id="form1">');
  var form2 = $('<input type="submit" id="form2">');

  $('#results').append("<div id='allForm'>")
  .append(form1)
  .append(form2)
  .append("</div>");
  createGroup();
}

function createGroup(){
  var form=document.getElementById('allForm');
  form.on('submit',function(e){
  e.preventDefault();
  var item = $('#form1').val();
  if(item){
    $('#results').append("<ul>")
    .append(item)
    .append("</ul>");
    form.remove();
  }
  else{
    alert("Input a name!");
  }
});
}

【问题讨论】:

    标签: javascript jquery html forms submit


    【解决方案1】:

    我稍微修改了您的代码,但这里有一些可行的方法:

    html:

    <button type="button" id="create-group">Create Group</button>
    
    <div id="results">
    
        <script id="results-template" type="text/x-handlebars-template">
    
            <h1>{{someResult}}</h1>
    
        </script>
    
    </div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.4/handlebars.js"></script>
    
    <script src="test.js"></script>
    

    js:

    $(document).ready(function() {
    
    var create = $('#create-group');
    
    create.click(function() {
    
        addForm();
    
    });
    
    });
    
    function addForm(){
    
      var form1 = $('<input type="text" id="form1">');
      var form2 = $('<input type="submit" id="form2">');
    
      $('#results').append("<div id='allForm'>")
      .append(form1)
      .append(form2)
      .append("</div>");
      createGroup();
    
    }
    
    function createGroup(){
    
      var submit = $('#form2');
    
      submit.click(function() {
    
        showResult();
    
      });
    
    }
    
    function showResult() {
    
      var source = $("#results-template").html();
    
      //compile returns a function
      var template = Handlebars.compile(source);
    
      //provide an object with values
      var context = {
    
          someResult: $('#form1').val()
      }
    
      var html = template(context);
      form1.remove();
      form2.remove();
      $('body').append(html);
    
    }
    

    我正在使用 handlebars.js 来获取输入的值、隐藏表单并将其显示到结果 div 中。它可能不是最必要的工具,但我认为它可能很有用。

    这是一个工作示例:

    http://jsfiddle.net/mtun4g6p/1/

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2011-04-16
      • 2020-11-05
      • 2014-03-16
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多