Jquery标签内容只是提交表单

hvvq6cgz  于 2023-02-15  发布在  jQuery
关注(0)|答案(1)|浏览(103)

我正在设置一个jquery选项卡式内容页面,其中HTML表单被组织成多个选项卡,每个选项卡都有一个Next按钮,可以让用户前进到下一个选项卡。我的问题是,在单击第一个选项卡上的Next按钮后,它会向右跳转以提交表单,而不是仅仅前进到下一个选项卡。我无法在jquery中找到原因,因为我正在使用click函数触发显示/隐藏每个制表符/div
希望有人能帮我找出问题所在

var initialLoad = true;
$(document).ready(function() {
  // Hide all tabs except the first one
  $("#tab2, #tab3, #tab4").hide();
  initialLoad = false;

  if (initialLoad == 'false') {
    // Show tab2 when "Next" is clicked on tab1
    $("#buttonone").click(function() {
      $("#tab1").hide();
      $("#tab2").show();
      $("#tab3").hide();
      $("#tab4").hide();
    });
    // Show tab3 when "Next" is clicked on tab2
    $("#buttontwo").click(function() {
      $("#tab1").hide();
      $("#tab2").hide();
      $("#tab3").show();
      $("#tab4").hide();
    });
    // Show tab4 when "Next" is clicked on tab3
    $("#buttonthree").click(function() {
      $("#tab1").hide();
      $("#tab2").hide();
      $("#tab3").hide();
      $("#tab4").show();
    });
  }
});
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.min.js" integrity="sha384-cuYeSxntonz0PPNlHhBs68uyIAVpIIOZZ5JqeqvYYIcEL727kskC66kF92t6Xl2V" crossorigin="anonymous"></script>

<form id="form" action="appointment-success.php" method="post">
  <div id="tab1">
    <h2>Select a Service</h2>
    <p><small>Can select more then one</small></p>
    <button id="buttonone" class='btn btn-success'>Next</button>
  </div>
  <div id="tab2">
    <h2>Select a Barber</h2>

    <button id="buttontwo" class='btn btn-success'>Next</button>
  </div>
  <div id="tab3">
    <h2>Select a Date & Time</h2>

    <button id="buttonthree" class='btn btn-success'>Next</button>
  </div>
  <div id="tab4">
    <h2>Tell Us Who You Are</h2>


    <input type="submit" name="createappt" value="Submit Appointment">
  </div>
</form>
xzv2uavs

xzv2uavs1#

正如Swati在评论部分所说,您必须为每个按钮添加type="button",否则它们将触发表单的submit事件,因为按钮的默认类型是submit
关于您的initialLoad,我们可以得出两个结论:

  1. initialLoad是一个布尔值(true/false),所以在if语句中,您将其与字符串进行比较,因此这将不起作用。
    1.如果你不使用initialLoad做任何其他事情,那么你可以完全删除它。在你的.ready()中,你设置initialLoad为false,然后询问它是否为false。如果你删除if语句和initialLoad,这也会起到同样的作用。
    如果你做到了以上几点,你的代码就可以工作了,但是如果你想让你的代码更动态一点,你也可以这样做。
    • 演示**
$("div[id^=tab] button[id^=button]").click(function() {
  var parentTab = $(this).parent();
  $("div[id^=tab]").not(parentTab.next()).hide();
  parentTab.next().show();
});

x一个一个一个一个x一个一个二个x

相关问题