如何根据组合框的值多次重复代码?jsp java

ddarikpa  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(436)

我有一个视图,它有一个组合框,值从2到25,由<c:foreach>组成(如代码中所示)。我希望表单重复相同的次数(组合框的值)。但是我已经尝试了很多东西,搜索了很多页面,但是这个案例没有什么特别的地方,就是我不能把js代码放在scriplet里面去获取数字,我把代码放在这里:

  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2. <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>JSP Page</title>
  8. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
  9. </head>
  10. <body>
  11. <div class="container">
  12. <div class="row">
  13. <div class="col-sm-12">
  14. <h1>Aca vas a crear tus preguntas</h1>
  15. <br>
  16. <br><br><br>
  17. Cantidad de preguntas:
  18. <select id="cantPreguntas" onchange="getSelectedValue();">
  19. <c:forEach var="p" begin="2" end="25">
  20. <c:choose>
  21. <c:when test="${p==2}">
  22. <option value="${p}" selected="selected"><c:out value="${p}"></c:out></option>
  23. </c:when>
  24. <c:otherwise>
  25. <option value="${p}"><c:out value="${p}"></c:out></option>
  26. </c:otherwise>
  27. </c:choose>
  28. </c:forEach>
  29. </select>
  30. <br><br><br><br>
  31. <p id='cont'></p>
  32. <c:forEach begin="1" end="3">
  33. <form class="form form-goup">
  34. <label for="txtPregunta">Pregunta num: (num) </label>
  35. <input type="text" name="txtPregunta" id="txtPregunta">
  36. <br>
  37. Cantidad de respuestas
  38. <select>
  39. <c:forEach var="r" begin="2" end="8">
  40. <option value="${r}"><c:out value="${r}"></c:out></option>
  41. </c:forEach>
  42. </select> <br>
  43. Respuesta (num)<input type="text" name="txtRespuesta" id="txtRespuesta"> <input type="checkbox">
  44. <br><br><br><br>
  45. </form>
  46. </c:forEach>
  47. </div>
  48. </div>
  49. </div>
  50. <script>
  51. function getSelectedValue() {
  52. var selectedValue = document.getElementById("cantPreguntas").value;
  53. document.getElementById("cont").innerHTML = selectedValue;
  54. }
  55. getSelectedValue();
  56. </script>
  57. <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
  58. <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
  59. <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js" integrity="sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s" crossorigin="anonymous"></script>
  60. </body>
  61. </html>

我用js创建了一个函数来获取combobox的值,为了证明它是有效的,我创建了一个标记来显示combobox的值
目前,为了在视图中看到一些结果,我将其设置为重复3次(foreach begin='1'end='3'),我尝试将许多内容放在“end”中,但所有内容都给了我一个错误或不起作用
总之,我想显示一个表单,这个表单显示了组合框显示的次数
现在看起来像这样

tez616oj

tez616oj1#

您不能仅根据选择框生成表单您需要提交该选择框,然后将所选值传递给 <c:forEach.. .js的另一种使用方法 clone 先克隆 form 然后就通过了这个 cloned html到您需要填充表单的div。
演示代码:

  1. function getSelectedValue() {
  2. var selectedValue = document.getElementById("cantPreguntas").value;
  3. document.getElementById("cont").innerHTML = selectedValue;
  4. var cloned = $("#forms_to_be_cloned form:first").clone(); //get div cloned
  5. var html = ""; //delare this
  6. //loop through value from 0 to slected value
  7. for (var i = 1; i <= selectedValue; i++) {
  8. html += i + " Form : <br>" + $(cloned).html(); //add htmls inside html variable
  9. }
  10. $("#populate_here").html(html) //finnaly add the generate html to div
  11. }
  12. getSelectedValue();
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  2. <select id="cantPreguntas" onchange="getSelectedValue();">
  3. <option value="3">
  4. 3
  5. </option>
  6. <option value="4">
  7. 4
  8. </option>
  9. <option value="5">
  10. 5
  11. </option>
  12. <option value="6">
  13. 6
  14. </option>
  15. </select>
  16. <p id='cont'></p>
  17. <!--keep this display none will be use for cloning-->
  18. <div id="forms_to_be_cloned" style="display:none">
  19. <c:forEach begin="1" end="3">
  20. <form class="form form-goup">
  21. <label for="txtPregunta">Pregunta num: (num) </label>
  22. <input type="text" name="txtPregunta" id="txtPregunta">
  23. <br> Cantidad de respuestas
  24. <select>
  25. <c:forEach var="r" begin="2" end="8">
  26. <option value="${r}">
  27. <c:out value="${r}"></c:out>
  28. </option>
  29. </c:forEach>
  30. </select> <br> Respuesta (num)<input type="text" name="txtRespuesta" id="txtRespuesta"> <input type="checkbox">
  31. <br><br><br><br>
  32. </form>
  33. </c:forEach>
  34. </div>
  35. <div id="populate_here">
  36. </div>
展开查看全部

相关问题