当前位置: 首页 > 编程笔记 >

如何在JavaScript中创建具有多个步骤的表单?

田俊爽
2023-03-14
本文向大家介绍如何在JavaScript中创建具有多个步骤的表单?,包括了如何在JavaScript中创建具有多个步骤的表单?的使用技巧和注意事项,需要的朋友参考一下

要创建包含多个步骤的表单,代码如下-

示例

<!DOCTYPE html>
<html>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
   * {
      box-sizing: border-box;
   }
   body {
      background-color: #f1f1f1;
   }
   #regForm {
      margin: 100px auto;
      font-family: Raleway;
      padding: 40px;
      width: 70%;
      min-width: 300px;
   }
   h1 {
      text-align: center;
   }
   input {
      padding: 10px;
      width: 100%;
      font-size: 17px;
      font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
      border: 1px solid #aaaaaa;
   }
   /* Mark input boxes that gets an error on validation: */
   input.invalid {
      background-color: #ffdddd;
   }
   /* Hide all steps by default: */
   .page {
      display: none;
   }
   button {
      background-color: #4CAF50;
      color: #ffffff;
      border: none;
      padding: 10px 20px;
      font-size: 17px;
      font-family: Raleway;
      cursor: pointer;
   }
   button:hover {
      opacity: 0.8;
   }
   #prevBtn {
      background-color: #bbbbbb;
   }
   .step {
      height: 15px;
      width: 15px;
      margin: 0 2px;
      background-color: #bbbbbb;
      border: none;
      border-radius: 50%;
      display: inline-block;
      opacity: 0.5;
   }
   .step.active {
      opacity: 1;
   }
   .step.finish {
      background-color: #4CAF50;
   }
</style>
<body>
<form id="regForm">
<h1>Register:</h1>
<div class="page">Name:
<p><input placeholder="名:" oninput="this.className = ''" name="fname"></p>
<p><input placeholder="姓氏:" oninput="this.className = ''" name="lname"></p>
</div>
<div class="page">Contact Info:
<p><input placeholder="E-mail:" oninput="this.className = ''" name="email"></p>
<p><input placeholder="Phone:" oninput="this.className = ''" name="phone"></p>
</div>
<div class="page">Birthday:
<p><input placeholder="Date:" oninput="this.className = ''" name="dd"></p>
<p><input placeholder="Month:" oninput="this.className = ''" name="nn"></p>
<p><input placeholder="Year:" oninput="this.className = ''" name="yyyy"></p>
</div>
<div style="overflow:auto;">
<div style="float:right;">
<button type="button" id="prevBtn" onclick="nextPrev(-1)">Previous</button>
<button type="button" id="nextBtn" onclick="nextPrev(1)">Next</button>
</div>
</div>
<div style="text-align:center;margin-top:40px;">
<span class="step"></span>
<span class="step"></span>
<span class="step"></span>
</div>
</form>
<script>
   var currentTab = 0;
   showTab(currentTab);
   function showTab(stepNo) {
      var pageEle = document.getElementsByClassName("page");
      pageEle[stepNo].style.display = "block";
      if (stepNo == 0) {
         document.getElementById("prevBtn").style.display = "none";
      }
      else {
         document.getElementById("prevBtn").style.display = "inline";
      }
      if (stepNo == (pageEle.length - 1)) {
         document.getElementById("nextBtn").innerHTML = "Submit";
      }
      else {
         document.getElementById("nextBtn").innerHTML = "Next";
      }
      changeStepIndicator(stepNo)
   }
   function nextPrev(stepNo) {
      var pageEle = document.getElementsByClassName("page");
      if (stepNo == 1 && !checkForm()) return false;
      pageEle[currentTab].style.display = "none";
      currentTab = currentTab + stepNo;
      if (currentTab >= pageEle.length) {
         document.getElementById("regForm").submit();
         return false;
      }
      showTab(currentTab);
   }
   function checkForm() {
      var pageEle, inputEle, i, valid = true;
      pageEle = document.getElementsByClassName("page");
      inputEle = pageEle[currentTab].getElementsByTagName("input");
      for (i = 0; i < inputEle.length; i++) {
         if (inputEle[i].value == "") {
            inputEle[i].className += " invalid";
            valid = false;
         }
      }
      if (valid) {
         document.getElementsByClassName("step")[currentTab].className += " finish";
      }
      return valid;
   }
   function changeStepIndicator(stepNo) {
      var i, pageEle = document.getElementsByClassName("step");
      for (i = 0; i < pageEle.length; i++) {
         pageEle[i].className = pageEle[i].className.replace(" active", "");
      }
      pageEle[stepNo].className += " active";
   }
</script>
</body>
</html>

输出结果

上面的代码将产生以下输出-


 类似资料:
  • 问题内容: 我想在Android中创建带有多列的表格。我看到的大多数示例都是2列。(我是Java和Android的新手。)我需要3-4列,并且应该能够在表中动态添加行。谁能给我提供示例代码。(我在WIN 7中使用Eclipse) 问题答案: 我假设您正在谈论的是TableLayout视图,而不是数据库中的表? 如果是这样,这是一个具有三列三行的表的XML示例。 每个 元素在表中创建一行,并且该元素

  • 问题内容: 我想在Django中创建一个多步骤表单,该表单仅在所有步骤结束时提交要处理的数据。每个步骤都必须能够访问和显示我们在先前步骤中输入的数据。 有没有办法用Django做到这一点?Django的Form-Wizard无法处理此基本功能。 问题答案: 当然,在Django中有一种方法可以做到这一点。 一种方法是保持会话中的值,直到最后提交它们。如果返回上一步,则可以使用会话中保留的值填充表单

  • 问题内容: 我正在尝试创建一个,但是在方法中添加一些错误。 请帮助我如何添加参数以及如何将其传递给在其中声明a和的另一个函数。 我的另一个功能是insertData(…) 我正在尝试创建一个并将其传递给函数。但是,当我在第一个函数中调用方法时,它将引发错误。 错误是 你调用的对象是空的 问题答案: 如果不调用其构造函数(新),则不能使用任何变量(例如,参考对象),但是不能使用新变量直接对其进行初始

  • 我的问题是--如何创建自定义列表视图,而不仅仅是重复一个自定义视图,而是像在Instagram或其他应用程序中,列表包括其他视图,这看起来就像滚动视图和列表视图android其他视图一样,但Roman Guy说“在滚动视图中的列表视图是一种非常糟糕的方式”,我同意这一点,不要相信谷歌使用这种方式... 使用ListView或Recolyer View实现此功能的最佳方法是什么

  • 给定一个使用分区的Spring批处理作业,是否可能有多个分区步骤? 例如: 在上述示例中,是否可以将另一个添加到(最好不需要为每个分区步骤提供分区器)?如果没有,是否有其他方法来配置多个步骤,这些步骤将针对每个分区逐个执行?

  • 我需要扫描日志文件以找到一些子字符串。 如何在单个正则表达式中组合以下条件: 查找子字符串“AAA”、“BBB”、“CCC”,但 我尝试了类似(?DDD | EEE | FFF)(AAA | BBB | CCC)的东西,但没有成功。 Java模式类应该支持正则表达式语法。 非常感谢。