如何显示表单的用户定义字段数?

时间:2018-05-13 12:09:04

标签: html twitter-bootstrap jinja2

我创建了一个使用HTML和Jinja2配置CSV文件的表单。要求用户更改名称并为每个列名指定类型。 CSV文件可以有任意数量的列,因此,我已经通过循环创建了表单目前,我使用引导网格并根据列数分为三列和一行。

<form action="/updateFile" method="POST" enctype="multipart/form-data">
    <div class="row">
        <div class="col-sm-12">
            <p class="form-group">
                {% for x in title %}
                    {% if loop.index == 1 %} <div class="row"> {% endif %}
                    <div class="col-xs-12 col-sm-12 col-lg-4 col-md-4">
                        <div class="row">
                            <div class="col-sm-6">
                                <label> Field {{ loop.index }} : {{ x }} </label>
                                <input type="text"  title="Name should only contain letters or numbers" class="form-control"
                                name="field-{{ loop.index }}" value="{{ x }}" maxlength="10" pattern="[a-zA-Z0-9_ ]+" required>
                            </div>
                            <div class="col-sm-6 pull-right">
                                <label>&nbsp;</label>
                                <select class="form-control " name="choice-{{ loop.index }}">
                                    <option value="mcqsr">MCQ-Single Response</option>
                                    <option value="mcqmr">MCQ-Multiple Response</option>
                                    <option value="num">Numerical</option>
                                    <option value="tim">Temporal</option>
                                    <option value="lat">Survey Site - Latitude</option>
                                    <option value="lng">Survey Site - Longitude</option>
                                    <option value="temp">Survey Site - Temporal</option>
                                </select>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-sm-12">
                                <label>&nbsp;</label>
                                <input type="text"  title="Name should only contain letters or numbers" class="form-control"
                                name="question-{{ loop.index }}" value=" Question of {{ x }}" pattern="[a-zA-Z0-9_ ]+" required>
                            </div>
                        </div>
                    </div>
                    {% if loop.index % 3 == 0 %} </div><p>&nbsp;</p><p>&nbsp;</p><div class="row"> {% endif %}
                    <input type="hidden" name="title-{{ loop.index }}" value= {{x}}>
                {% endfor %}
            </div>
        </div>
    <div class="row">
        <div class="col-sm-12 text-center">
            <input type="hidden" name="filename" value= {{filename}}>
            <input type="hidden" name="numofField" value= {{numofField}}>
            <button class="btn btn-primary" type="submit" value="Update">Submit</button>
        </div>
    </div>
    </div>
</form>

我想在用户中添加一个选项,以选择他/她想要选择的变量数量。与电子商务网站或相册类似,它们通常会为您提供选项以显示25&#34;一次,并允许您选择将其更改为&#34;显示50&#34;,&#34;显示100&#34;或&#34;显示所有&#34;为了使用户能够控制杂乱的数量,他们将能够在页面中导航。我可以找到一些像datatables.js这样的例子,但它们只适用于表格。我找不到怎样的方法呢?

1 个答案:

答案 0 :(得分:0)

如果您访问javascript,您可以编写类似这样的逻辑。

let container = document.getElementById('container');



for (let i=0; i<200; i++) {
  let div = document.createElement('div');
  div.className = 'box';
  container.appendChild(div);
}

var items = document.getElementsByClassName('box');


function show(howMany) {
 
  showAll();
  
    let count = parseInt(howMany);
    for(let i = 0; i<items.length;i++){
      if(i<count){
        continue
      } else {
        items[i].style.display = 'none';
      }
    }
}

function showAll() {
  for(let i = 0; i<items.length;i++){
      items[i].style.display = 'inline-block';
    }
}
.box{
  display: inline-block;
  height: 25px;
  width: 25px;
  background: tomato;
  margin-right: 4px;
}
<button onclick="show('50')">show 50</button>
<button onclick="show('100')">show 100</button>
<button onclick="showAll()">show all</button>

<div id="container"></div>