如何在从mongo中提取数据以便用户编辑后,在HTML中显示复选框值(使用ejs)?

时间:2016-11-23 19:02:21

标签: javascript mongodb express checkbox ejs

我目前将数据保存到mongo中以获取多项选择题并标记正确答案。在mongo中,我保存了类似 question.options.option1.check =“on”的内容  为了正确的答案。

当我进入“编辑”页面时,我将mongo中的特定记录从ejs中提取为“问题”,我可以轻松地将可编辑字段值填充为question.question或question.options.option1 .text等。但我还想标记之前检查过的复选框。下面是复选框的示例。

<input  id=opt1 type="checkbox" name="check1"  >

当我使用 <input id=opt1 type="checkbox" name="check1" <%=question.options.option1.check%> >它不起作用时,我也尝试<input id=opt1 type="checkbox" name="check1" checked="<%=question.options.option1.check%>">这也不起作用。但是,如果我给出属性“checked”=“这里的任何值或根本没有值”,它会检查,这是错误的。

所以问题是检查编辑页面上相应复选框的正确方法是什么。?

3 个答案:

答案 0 :(得分:3)

输入类型复选框将检查的属性设置为true,即使您没有为其指定任何值。

因此,您可能需要执行类似

的操作
<input id="opt1" type="checkbox" name="check1" <%= question.options.option1.check ? "checked" : "" %> />

如果这对您有用,请告诉我。如果条件无法在&lt;%=%&gt;内进行评估ejs标签,您可能需要在显示之前评估条件并存储在另一个变量中:

<% let checked = question.options.option1.check ? "checked" : "" %>
<input id="opt1" type="checkbox" name="check1" <%= checked %> />

答案 1 :(得分:0)

我有类似的问题。我使用了阿多尼克提供的第二个选项。下面是我使用它的代码块。第一个选项将所有复选框设置为true;即使我将值设置为false,“ false”或“。使用未转义为<%-genChk%>的变量也可以。

<% genres.forEach( g => {%>
  <% let genreChk = g.checked ? 'checked' : '' %>
  <input type="checkbox" name="gen" id="<%=g._id%>" value="<%=g._id%>" <%=genreChk%>>
  <label for="<%=g._id%>"><%=g.name%></label>
<%})%>

答案 2 :(得分:0)

您也可以这样说:

  <label class="form-check-label" for="radio2">
         <input type="radio" class="form-check-input" 
             id="rstatus1" 
             name="status"
             value="S" 
            <%= status === 'S' ? 'checked' : '' %> >SIM
  </label>