在按钮单击(多步形式)上更改表单 - 没有Bootstrap

问题描述 投票:0回答:1

我有一个多步形式(在HubSpot中创建):Demo

演示中的表单是步骤1.一旦用户完成,步骤1,他们点击按钮,它将转到第2步(正如您所期望的那样!)。

但是,我似乎无法让这个动作起作用。我有两个问题:

  1. 如果用户在步骤1,我希望步骤1锚链接保持下划线。不确定我如何检查用户使用JavaScript的形式。
  2. 我需要提交表单然后更改为第2步。问题是它们是HubSpot嵌入式表单,这意味着我不能(并且不想)改变HTML。我已经看过很多Bootstrap approaches,但是,再次,不想过多地改变HTML,因此,想要避免它。

第1步表单嵌入代码(在下面的代码中):

<!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
  hbspt.forms.create({
    portalId: "103687",
    formId: "7c124354-e1ff-411d-9245-2b214e943a90"
});
</script>

第2步表单嵌入代码(提交表单1后我想要出现的内容):

<!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
  hbspt.forms.create({
    portalId: "103687",
    formId: "555bd0a1-adb9-4e31-b71e-e09e4834e844"
});
</script>

我尝试过的:

$(document).ready(function() {
  $(".modal-content .hs-button").click(function() {
    var button = $(this);
    var currentSection = button.parents(".section");
    var currentSectionIndex = currentSection.index();
    var headerSection = $('.steps li').eq(currentSectionIndex);
    currentSection.removeClass("is-active").next().addClass("is-active");
    headerSection.removeClass("is-active").next().addClass("is-active");

    $(".form-wrapper").submit(function(e) {
      e.preventDefault();
    });

    if (currentSectionIndex === 3) {
      $(document).find(".modal-content .form-columns-2 .form-columns-1").first().addClass("is-active");
      $(document).find(".steps li").first().addClass("is-active");
    }
  });
});

任何帮助/建议将不胜感激!

完整的演示代码:

$(document).ready(function() {
  $(".modal-content .hs-button").click(function() {
    var button = $(this);
    var currentSection = button.parents(".section");
    var currentSectionIndex = currentSection.index();
    var headerSection = $('.steps li').eq(currentSectionIndex);
    currentSection.removeClass("is-active").next().addClass("is-active");
    headerSection.removeClass("is-active").next().addClass("is-active");

    $(".modal-content").submit(function(e) {
      e.preventDefault();
    });

    if (currentSectionIndex === 3) {
      $(document).find(".modal-content").first().addClass("is-active");
      $(document).find(".steps li").first().addClass("is-active");
    }
  });
});
a {
  cursor: pointer;
}

p {
  margin: 0 0 1rem;
  font-weight: 400;
}

a {
  color: inherit;
  cursor: pointer;
}

ul {
  padding-left: 0;
  margin: 0;
}

.input textarea {
  padding-left: 10px !important;
}

.modal-content {
  background-color: #097afb;
  margin: 4% auto 15% auto;
  padding-bottom: 30px;
  border-radius: 3px;
}

.steps {
  text-align: center;
}

.steps li {
  display: inline-block;
  margin: 20px;
  color: #fff;
  font-size: 0.875rem;
  padding-bottom: 5px;
  text-transform: uppercase;
}

.imgcontainer {
  text-align: center;
  position: relative;
  display: block;
}

.imgcontainer h2 {
  font-size: 29px;
  padding-top: 50px;
  color: #fff;
  margin: 0;
  text-transform: uppercase;
}

.imgcontainer p {
  font-size: 18px !important;
  padding-top: 10px;
  color: #fff;
}

input[type=text],
input[type=email] {
  width: 90%;
  padding: 12px 12px;
  margin: 10px 50%;
  display: inline-block;
  border-bottom: 1px solid #414141;
  box-sizing: border-box;
  font-size: 16px;
  background: transparent;
  text-transform: uppercase;
  border-top: none;
  border-left: none;
  box-shadow: none;
  border-right: none;
}

textarea {
  width: 98% !important;
  padding: 12px 20px;
  margin: 8px 25%;
  display: inline-block;
  border-bottom: 1px solid #414141 !important;
  box-sizing: border-box;
  font-size: 16px !important;
  background: transparent;
  text-transform: uppercase;
  border-top: none !important;
  border-left: none !important;
  box-shadow: none !important;
  border-right: none !important;
  resize: none;
}

form span:not(.close) {
  display: none !important;
}

form .actions {
  padding: 0px 20px 0px 0px;
  width: 87%;
  display: inline-block;
}

form .actions input[type=submit]:hover {
  background-color: #000;
  color: #fff;
  border: 2px solid #000;
}

form .actions input[type=submit] {
  border: 2px solid #fff !important;
  background-color: #097afb;
  padding: 12px 25px !important;
  color: #fff !important;
  text-decoration: none;
  font-size: 0.8125rem;
  font-family: "Lato";
  font-weight: 700;
  float: right;
  background-image: none;
  text-transform: uppercase;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="visible" class="button-outline hero-button button-arrow" onclick="document.getElementById('modal-wrapper').style.display='block'">Click here</a>

<div id="modal-wrapper" class="modal" style="display: none;">
  <div>
    <div>
      <div>
        <div>
          <span>
          <form class="modal-content animate">
<div class="imgcontainer">
          <h2 style="text-align: center;">Title</h2>
          <p>Lorum Ipsum</p>
        </div>
        <div class="container">
          <!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
          <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
          <script>
            // <![CDATA[
            hbspt.forms.create({
              portalId: "103687",
              formId: "7c124354-e1ff-411d-9245-2b214e943a90"
            });
            // ]]>
          </script>
          <div></div>
          <ul class="steps">
            <li class="is-active"><a>Step 1</a></li>
            <li>/</li>
            <li><a>Step 2</a></li>
            <li>/</li>
            <li><a>Step 3</a></li>
          </ul>
        </div>
        </form>
        </span>
        </div>
      </div>
    </div>
  </div>
</div>
javascript jquery html css
1个回答
0
投票

我希望这就是你要找的。

$(document).ready(function(){
  $(".form-wrapper .button").click(function(){
    var button = $(this);
    var currentSection = button.parents(".section");
    var currentSectionIndex = currentSection.index();
    var headerSection = $('.steps li').eq(currentSectionIndex);
    currentSection.removeClass("is-active").next().addClass("is-active");
    headerSection.removeClass("is-active").next().addClass("is-active");

    $(".form-wrapper").submit(function(e) {
      e.preventDefault();
    });

    if(currentSectionIndex === 3){
      $(document).find(".form-wrapper .section").first().addClass("is-active");
      $(document).find(".steps li").first().addClass("is-active");
    }
  });
});
html, body{
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-family: 'Open Sans', sans-serif;
  background-color: #3498db;
}

h1, h2, h3, h4, h5 ,h6{
  font-weight: 200;
}

a{
  text-decoration: none;
}

p, li, a{
  font-size: 14px;
}

fieldset{
  margin: 0;
  padding: 0;
  border: none;
}

/* GRID */

.twelve { width: 100%; }
.eleven { width: 91.53%; }
.ten { width: 83.06%; }
.nine { width: 74.6%; }
.eight { width: 66.13%; }
.seven { width: 57.66%; }
.six { width: 49.2%; }
.five { width: 40.73%; }
.four { width: 32.26%; }
.three { width: 23.8%; }
.two { width: 15.33%; }
.one { width: 6.866%; }

/* COLUMNS */

.col {
	display: block;
	float:left;
	margin: 0 0 0 1.6%;
}

.col:first-of-type {
  margin-left: 0;
}

.container{
  width: 100%;
  max-width: 700px;
  margin: 0 auto;
  position: relative;
}

.row{
  padding: 20px 0;
}

/* CLEARFIX */

.cf:before,
.cf:after {
    content: " ";
    display: table;
}

.cf:after {
    clear: both;
}

.cf {
    *zoom: 1;
}

.wrapper{
  width: 100%;
  margin: 30px 0;
}

/* STEPS */

.steps{
  list-style-type: none;
  margin: 0;
  padding: 0;
  background-color: #fff;
  text-align: center;
}


.steps li{
  display: inline-block;
  margin: 20px;
  color: #ccc;
  padding-bottom: 5px;
}

.steps li.is-active{
  border-bottom: 1px solid #3498db;
  color: #3498db;
}

/* FORM */

.form-wrapper .section{
  padding: 0px 20px 30px 20px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  background-color: #fff;
  opacity: 0;
  -webkit-transform: scale(1, 0);
  -ms-transform: scale(1, 0);
  -o-transform: scale(1, 0);
  transform: scale(1, 0);
  -webkit-transform-origin: top center;
  -moz-transform-origin: top center;
  -ms-transform-origin: top center;
  -o-transform-origin: top center;
  transform-origin: top center;
  -webkit-transition: all 0.5s ease-in-out;
  -o-transition: all 0.5s ease-in-out;
  transition: all 0.5s ease-in-out;
  text-align: center;
  position: absolute;
  width: 100%;
  min-height: 300px
}

.form-wrapper .section h3{
  margin-bottom: 30px;
}

.form-wrapper .section.is-active{
  opacity: 1;
  -webkit-transform: scale(1, 1);
  -ms-transform: scale(1, 1);
  -o-transform: scale(1, 1);
  transform: scale(1, 1);
}

.form-wrapper .button, .form-wrapper .submit{
  background-color: #3498db;
  display: inline-block;
  padding: 8px 30px;
  color: #fff;
  cursor: pointer;
  font-size: 14px !important;
  font-family: 'Open Sans', sans-serif !important;
  position: absolute;
  right: 20px;
  bottom: 20px;
}

.form-wrapper .submit{
  border: none;
  outline: none;
  -webkit-box-sizing: content-box;
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

.form-wrapper input[type="text"],
.form-wrapper input[type="password"]{
  display: block;
  padding: 10px;
  margin: 10px auto;
  background-color: #f1f1f1;
  border: none;
  width: 50%;
  outline: none;
  font-size: 14px !important;
  font-family: 'Open Sans', sans-serif !important;
}

.form-wrapper input[type="radio"]{
  display: none;
}

.form-wrapper input[type="radio"] + label{
  display: block;
  border: 1px solid #ccc;
  width: 100%;
  max-width: 100%;
  padding: 10px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  cursor: pointer;
  position: relative;
}

.form-wrapper input[type="radio"] + label:before{
  content: "✔";
  position: absolute;
  right: -10px;
  top: -10px;
  width: 30px;
  height: 30px;
  line-height: 30px;
  border-radius: 100%;
  background-color: #3498db;
  color: #fff;
  display: none;
}

.form-wrapper input[type="radio"]:checked + label:before{
  display: block;
}

.form-wrapper input[type="radio"] + label h4{
  margin: 15px;
  color: #ccc;
}

.form-wrapper input[type="radio"]:checked + label{
  border: 1px solid #3498db;
}

.form-wrapper input[type="radio"]:checked + label h4{
  color: #3498db;
}
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <div class="container">
    <div class="wrapper">
      <ul class="steps">
        <li class="is-active">Step 1</li>
        <li>Step 2</li>
        <li>Step 3</li>
      </ul>
      <form class="form-wrapper">
        <fieldset class="section is-active">
          <h3>Your Details</h3>
          <input type="text" name="name" id="name" placeholder="Name">
          <input type="text" name="email" id="email" placeholder="Email">
          <div class="button">Next</div>
        </fieldset>
        <fieldset class="section">
          <h3>Account Type</h3>
          <div class="row cf">
            <div class="four col">
              <input type="radio" name="r1" id="r1" checked>
              <label for="r1">
                <h4>Designer</h4>
              </label>
            </div>
            <div class="four col">
              <input type="radio" name="r1" id="r2"><label for="r2">
                <h4>Developer</h4>
              </label>
            </div>
            <div class="four col">
              <input type="radio" name="r1" id="r3"><label for="r3">
                <h4>Project Manager</h4>
              </label>
            </div>
          </div>
          <div class="button">Next</div>
        </fieldset>
        <fieldset class="section">
          <h3>Choose a Password</h3>
          <input type="password" name="password" id="password" placeholder="Password">
          <input type="password" name="password2" id="password2" placeholder="Re-enter Password">
          <input class="submit button" type="submit" value="Sign Up">
        </fieldset>
        <fieldset class="section">
          <h3>Account Created!</h3>
          <p>Your account has now been created.</p>
          <div class="button">Reset Form</div>
        </fieldset>
      </form>
    </div>
  </div>
© www.soinside.com 2019 - 2024. All rights reserved.