jQuery多步向导表单

时间:2018-10-07 22:52:12

标签: javascript jquery

我试图用jQuery Multi-Step Wizard Form的演示文稿提交表单(perl脚本),但对我而言,我无法将其提交到测试脚本NoScript.pl。

我已经阅读了文档,似乎无法找出任何帮助。

window.onload = function() {

  $(function() {
    var $signupForm = $('#SignupForm');

    $signupForm.validationEngine();

    $signupForm.formToWizard({
      submitButton: 'SaveAccount',
      showProgress: true, //default value for showProgress is also true
      nextBtnName: 'Forward >>',
      prevBtnName: '<< Previous',
      showStepNo: true,
      validateBeforeNext: function() {
        return $signupForm.validationEngine('validate');
      }
    });


    $('#txt_stepNo').change(function() {
      $signupForm.formToWizard('GotoStep', $(this).val());
    });

    $('#btn_next').click(function() {
      $signupForm.formToWizard('NextStep');
    });

    $('#btn_prev').click(function() {
      $signupForm.formToWizard('PreviousStep');
    });
  });


}
body {
  font-family: Lucida Sans, Arial, Helvetica, Sans-Serif;
  font-size: 13px;
  margin: 20px;
}

#header {
  text-align: center;
  border-bottom: solid 1px #b2b3b5;
  margin: 0 0 20px 0;
}

fieldset {
  border: none;
  width: 320px;
}

legend {
  font-size: 18px;
  margin: 0px;
  padding: 10px 0px;
  color: #b0232a;
  font-weight: bold;
}

label {
  display: block;
  margin: 15px 0 5px;
}

input[type=text],
input[type=password] {
  width: 300px;
  padding: 5px;
  border: solid 1px #000;
}

button,
.prev,
.next {
  background-color: #b0232a;
  padding: 5px 10px;
  color: #fff;
  text-decoration: none;
}

button:hover,
.prev:hover,
.next:hover {
  background-color: #000;
  text-decoration: none;
}

button {
  border: none;
}

#controls {
  background: #eee;
  box-shadow: 0 0 16px #999;
  height: 30px;
  position: fixed;
  padding: 10px;
  top: 0;
  left: 0;
  width: 100%;
  dex: 1
}

#controls h1 {
  color: #666;
  display: inline-block;
  margin: 0 0 8px 0
}

#controls input[type=text] {
  border-color: #999;
  margin: 0 25px;
  width: 120px
}

#steps {
  margin: 80px 0 0 0
}

.prev {
  float: left
}

.next {
  float: right
}

.steps {
  list-style: none;
  width: 100%;
  overflow: hidden;
  margin: 0;
  padding: 0
}

.steps li {
  color: #b0b1b3;
  font-size: 24px;
  float: left;
  padding: 10px;
  transition: all -moz-transition:all .3s;
  -webkit-transition: all -o-transition:all .3s
}

.steps li span {
  font-size: 11px;
  display: block
}

.steps li.current {
  color: #000
}

.breadcrumb {
  height: 37px
}

.breadcrumb li {
  background: #eee;
  font-size: 14px
}

.breadcrumb li.current:after {
  border-top: 18px solid transparent;
  border-bottom: 18px solid transparent;
  border-left: 6px solid;
  content: ' ';
  position: absolute;
  top: 0;
  right: -6px
}

.breadcrumb li.current {
  background: #666;
  color: #eee;
  position: relative
}

.breadcrumb li:last-child:after {
  border: none
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/artoodetoo/formToWizard/v0.0.2/jquery.formtowizard.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/validationEngine.jquery.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/jquery.validationEngine.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/languages/jquery.validationEngine-en.min.js"></script>

<form id="SignupForm" action="http://www.smldesign.net/cgi-bin/NoScript.pl" method="post">

  <fieldset>
    <legend>Account information</legend>
    <label for="Name">Name</label>
    <input id="Name" type="text" class="validate[required]" />
    <label for="Email">Email</label>
    <input id="Email" type="text" class="validate[custom[email],required]" />
    <label for="Password">Password</label>
    <input id="Password" type="password" />
  </fieldset>
  <fieldset>
    <legend>Company information</legend>
    <label for="CompanyName">Company Name</label>
    <input id="CompanyName" type="text" class="validate[required]" />
    <label for="Website">Website</label>
    <input id="Website" type="text" />
    <label for="CompanyEmail">CompanyEmail</label>
    <input id="CompanyEmail" type="text" />
  </fieldset>
  <fieldset>
    <legend>Billing information</legend>
    <label for="NameOnCard">Name on Card</label>
    <input id="NameOnCard" type="text" />
    <label for="CardNumber">Card Number</label>
    <input id="CardNumber" type="text" />
    <label for="CreditcardMonth">Expiration</label>
    <select id="CreditcardMonth">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
    </select>
    <select id="CreditcardYear">>
      <option value="2018">2018</option>
      <option value="2019">2019</option>
    </select>
    <label for="Address1">Address 1</label>
    <input id="Address1" type="text" />
    <label for="Address2">Address 2</label>
    <input id="Address2" type="text" />
    <label for="City">City</label>
    <input id="City" type="text" />
    <label for="City">Country</label>
    <select id="Country">
      <option value="CA">Canada</option>
      <option value="US">United States of America</option>
      <option value="UM">United States Minor Outlying Islands</option>
      <option value="VI">United States Virgin Islands</option>

    </select>
  </fieldset>
  <p>
    <input id="SaveAccount" type="button" value="Submit form" />
  </p>
</form>

2 个答案:

答案 0 :(得分:1)

要解决此问题,您是否尝试在调用最后一步时使用jQuery的$ .submit()函数。这将是:

$("#SaveAccount").click(function() {
    $("#SignupForm").submit();
}

请记住,“提交表单”按钮仅在最后一步显示,您只需要在$('#btn_prev')。click(function(){...}之后,将此代码段添加到Javascript中即可功能。

window.onload = function() {

  $(function() {
    var $signupForm = $('#SignupForm');

    $signupForm.validationEngine();

    $signupForm.formToWizard({
      submitButton: 'SaveAccount',
      showProgress: true, //default value for showProgress is also true
      nextBtnName: 'Forward >>',
      prevBtnName: '<< Previous',
      showStepNo: true,
      validateBeforeNext: function() {
        return $signupForm.validationEngine('validate');
      }
    });


    $('#txt_stepNo').change(function() {
      $signupForm.formToWizard('GotoStep', $(this).val());
    });

    $('#btn_next').click(function() {
      $signupForm.formToWizard('NextStep');
    });

    $('#btn_prev').click(function() {
      $signupForm.formToWizard('PreviousStep');
    });

    $("#SaveAccount").click(function() {
      $("#SignupForm").submit();
    });
  });


}
body {
  font-family: Lucida Sans, Arial, Helvetica, Sans-Serif;
  font-size: 13px;
  margin: 20px;
}

#header {
  text-align: center;
  border-bottom: solid 1px #b2b3b5;
  margin: 0 0 20px 0;
}

fieldset {
  border: none;
  width: 320px;
}

legend {
  font-size: 18px;
  margin: 0px;
  padding: 10px 0px;
  color: #b0232a;
  font-weight: bold;
}

label {
  display: block;
  margin: 15px 0 5px;
}

input[type=text],
input[type=password] {
  width: 300px;
  padding: 5px;
  border: solid 1px #000;
}

button,
.prev,
.next {
  background-color: #b0232a;
  padding: 5px 10px;
  color: #fff;
  text-decoration: none;
}

button:hover,
.prev:hover,
.next:hover {
  background-color: #000;
  text-decoration: none;
}

button {
  border: none;
}

#controls {
  background: #eee;
  box-shadow: 0 0 16px #999;
  height: 30px;
  position: fixed;
  padding: 10px;
  top: 0;
  left: 0;
  width: 100%;
  dex: 1
}

#controls h1 {
  color: #666;
  display: inline-block;
  margin: 0 0 8px 0
}

#controls input[type=text] {
  border-color: #999;
  margin: 0 25px;
  width: 120px
}

#steps {
  margin: 80px 0 0 0
}

.prev {
  float: left
}

.next {
  float: right
}

.steps {
  list-style: none;
  width: 100%;
  overflow: hidden;
  margin: 0;
  padding: 0
}

.steps li {
  color: #b0b1b3;
  font-size: 24px;
  float: left;
  padding: 10px;
  transition: all -moz-transition:all .3s;
  -webkit-transition: all -o-transition:all .3s
}

.steps li span {
  font-size: 11px;
  display: block
}

.steps li.current {
  color: #000
}

.breadcrumb {
  height: 37px
}

.breadcrumb li {
  background: #eee;
  font-size: 14px
}

.breadcrumb li.current:after {
  border-top: 18px solid transparent;
  border-bottom: 18px solid transparent;
  border-left: 6px solid;
  content: ' ';
  position: absolute;
  top: 0;
  right: -6px
}

.breadcrumb li.current {
  background: #666;
  color: #eee;
  position: relative
}

.breadcrumb li:last-child:after {
  border: none
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/artoodetoo/formToWizard/v0.0.2/jquery.formtowizard.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/validationEngine.jquery.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/jquery.validationEngine.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-Validation-Engine/2.6.4/languages/jquery.validationEngine-en.min.js"></script>

<form id="SignupForm" action="http://www.smldesign.net/cgi-bin/NoScript.pl" method="post">

  <fieldset>
    <legend>Account information</legend>
    <label for="Name">Name</label>
    <input id="Name" type="text" class="validate[required]" />
    <label for="Email">Email</label>
    <input id="Email" type="text" class="validate[custom[email],required]" />
    <label for="Password">Password</label>
    <input id="Password" type="password" />
  </fieldset>
  <fieldset>
    <legend>Company information</legend>
    <label for="CompanyName">Company Name</label>
    <input id="CompanyName" type="text" class="validate[required]" />
    <label for="Website">Website</label>
    <input id="Website" type="text" />
    <label for="CompanyEmail">CompanyEmail</label>
    <input id="CompanyEmail" type="text" />
  </fieldset>
  <fieldset>
    <legend>Billing information</legend>
    <label for="NameOnCard">Name on Card</label>
    <input id="NameOnCard" type="text" />
    <label for="CardNumber">Card Number</label>
    <input id="CardNumber" type="text" />
    <label for="CreditcardMonth">Expiration</label>
    <select id="CreditcardMonth">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>
      <option value="11">11</option>
      <option value="12">12</option>
    </select>
    <select id="CreditcardYear">>
      <option value="2018">2018</option>
      <option value="2019">2019</option>
    </select>
    <label for="Address1">Address 1</label>
    <input id="Address1" type="text" />
    <label for="Address2">Address 2</label>
    <input id="Address2" type="text" />
    <label for="City">City</label>
    <input id="City" type="text" />
    <label for="City">Country</label>
    <select id="Country">
      <option value="CA">Canada</option>
      <option value="US">United States of America</option>
      <option value="UM">United States Minor Outlying Islands</option>
      <option value="VI">United States Virgin Islands</option>

    </select>
  </fieldset>
  <p>
    <input id="SaveAccount" type="button" value="Submit form" />
  </p>
</form>

答案 1 :(得分:0)

我相信以上答案是正确的。

在任何情况下,您似乎都没有强迫过发布Perl脚本的FORM执行提交。

jQuery提交方法可以为您做到这一点。

p.s。,您的信用卡提交表单似乎不是TLS

相关问题