Javascript 如何验证逐步登记表?

Javascript 如何验证逐步登记表?,javascript,jquery,html,Javascript,Jquery,Html,我正在使用下面的代码作为一个逐步登记表,但当我点击下一步按钮时,所有字段都应该是强制性的,当我没有填写所有字段时,它不会进入下一步,请建议我它非常重要 <!DOCTYPE html> <header style="background:white;height:100px;"> <div class="container-fluid"> <div class="col-md-12"> <div class="col-md-6"> <

我正在使用下面的代码作为一个逐步登记表,但当我点击下一步按钮时,所有字段都应该是强制性的,当我没有填写所有字段时,它不会进入下一步,请建议我它非常重要

<!DOCTYPE html>
<header style="background:white;height:100px;">
<div class="container-fluid">
<div class="col-md-12">
<div class="col-md-6">
<img src="logo.png">
</div>
</div>
</div>
</header>

<!-- multistep form -->
<form id="msform" method="POST">
    <!-- progressbar -->
    <ul id="progressbar">
        <li class="active">Contact Details</li>
        <li>Address Details</li>
        <li>Personal Details</li>
        <li>identity Details</li>
    </ul>
    <!-- fieldsets -->
    <fieldset>
        <h2 class="fs-title">Create your account</h2>
        <h3 class="fs-subtitle">This is step 1</h3>
        <input type="text" name="name" placeholder="Name" required/>
        <input type="text" name="email" placeholder="Email" />
        <input type="text" name="mobile" placeholder="Mobile" />
        <input type="text" name="altr" placeholder="Alternate Mobile" />
        <select>
        <option>Select Gender</option>
        <option>Male</option>
        <option>Female</option>

        </select>
        <input type="button" name="next" class="next action-button" value="Next" />
    </fieldset>
    <fieldset>
        <h2 class="fs-title">Social Profiles</h2>
        <h3 class="fs-subtitle">Your presence on the social network</h3>
        <select class="chosen-select">
        <option>Select State</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select District</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select Constitution</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select Mandal</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select Pincode</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <textarea name="address" placeholder="Address"></textarea>
        <input type="button" name="previous" class="previous action-button" value="Previous" />
        <input type="button" name="next" class="next action-button" value="Next" />
    </fieldset>
    <fieldset>
        <h2 class="fs-title">Personal Details</h2>
        <h3 class="fs-subtitle">We will never sell it</h3>
        <input type="text" name="fname" placeholder="Date of Birth" />
        <select>
        <option>Select Marital Status</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select Education</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select Languages</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Select Experience</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <input type="button" name="previous" class="previous action-button" value="Previous" />
        <input type="button" name="next" class="next action-button" value="Next" />
    </fieldset>
        <fieldset>
        <h2 class="fs-title">Personal Details</h2>
        <h3 class="fs-subtitle">We will never sell it</h3>
        <input type="text" name="fname" placeholder="Id Proof-Aadhaar card" />
        <select>
        <option>Select Blood Group</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <select>
        <option>Two Wheeler</option>
        <option>1</option>
        <option>2</option>      
        </select>
        <label> Photo:</label><input type="file" name="phone"  />
        <label>Signature:</label><input type="file" name="phone" />
        <input type="button" name="previous" class="previous action-button" value="Previous" />
        <input type="submit" name="submit" class="next action-button" value="Submit"  />
    </fieldset>

</form>

<!-- jQuery -->
<script src="http://thecodeplayer.com/uploads/js/jquery-1.9.1.min.js" type="text/javascript"></script>
<!-- jQuery easing plugin -->
<script src="http://thecodeplayer.com/uploads/js/jquery.easing.min.js" type="text/javascript"></script>

<style>

/*custom font*/
@import url(http://fonts.googleapis.com/css?family=Montserrat);

/*basic reset*/
* {margin: 0; padding: 0;}

html {
    height: 100%;
    /*Image only BG fallback*/
    background: url('http://thecodeplayer.com/uploads/media/gs.png');
    /*background = gradient + image pattern combo*/
    background: 
        linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)), 
        url('http://thecodeplayer.com/uploads/media/gs.png');
}

body {
    font-family: montserrat, arial, verdana;
}
/*form styles*/
#msform {
    width: 400px;
    margin: 50px auto;
    text-align: center;
    position: relative;
}
#msform fieldset {
    background: white;
    border: 0 none;
    border-radius: 3px;
    box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4);
    padding: 20px 30px;

    box-sizing: border-box;
    width: 80%;
    margin: 0 10%;

    /*stacking fieldsets above each other*/
    position: absolute;
}
/*Hide all except first fieldset*/
#msform fieldset:not(:first-of-type) {
    display: none;
}
/*inputs*/
#msform input, #msform textarea {
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 3px;
    margin-bottom: 10px;
    width: 100%;
    box-sizing: border-box;
    font-family: montserrat;
    color: #2C3E50;
    font-size: 13px;
}
/*buttons*/
#msform .action-button {
    width: 100px;
    background: #27AE60;
    font-weight: bold;
    color: white;
    border: 0 none;
    border-radius: 1px;
    cursor: pointer;
    padding: 10px 5px;
    margin: 10px 5px;
}
#msform .action-button:hover, #msform .action-button:focus {
    box-shadow: 0 0 0 2px white, 0 0 0 3px #27AE60;
}
/*headings*/
.fs-title {
    font-size: 15px;
    text-transform: uppercase;
    color: #2C3E50;
    margin-bottom: 10px;
}
.fs-subtitle {
    font-weight: normal;
    font-size: 13px;
    color: #666;
    margin-bottom: 20px;
}
/*progressbar*/
#progressbar {
    margin-bottom: 30px;
    overflow: hidden;
    /*CSS counters to number the steps*/
    counter-reset: step;
}
#progressbar li {
    list-style-type: none;
    color: white;
    text-transform: uppercase;
    font-size: 9px;
    width: 24.33%;
    float: left;
    position: relative;
}
#progressbar li:before {
    content: counter(step);
    counter-increment: step;
    width: 20px;
    line-height: 20px;
    display: block;
    font-size: 10px;
    color: #333;
    background: white;
    border-radius: 3px;
    margin: 0 auto 5px auto;
}
/*progressbar connectors*/
#progressbar li:after {
    content: '';
    width: 100%;
    height: 2px;
    background: white;
    position: absolute;
    left: -50%;
    top: 9px;
    z-index: -1; /*put it behind the numbers*/
}
#progressbar li:first-child:after {
    /*connector not needed before the first step*/
    content: none; 
}
/*marking active/completed steps green*/
/*The number of the step and the connector before it = green*/
#progressbar li.active:before,  #progressbar li.active:after{
    background: #27AE60;
    color: white;
}
#msform select{
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 3px;
    margin-bottom: 10px;
    width: 100%;
    box-sizing: border-box;
    font-family: montserrat;
    color: #2C3E50;
    font-size: 13px;
}
label{
    float: left;
    font-size: 14px;
    color: #f50a69;
}
</style>

<script>


//jQuery time
var current_fs, next_fs, previous_fs; //fieldsets
var left, opacity, scale; //fieldset properties which we will animate
var animating; //flag to prevent quick multi-click glitches

$(".next").click(function(){
    if(animating) return false;
    animating = true;

    current_fs = $(this).parent();
    next_fs = $(this).parent().next();

    //activate next step on progressbar using the index of next_fs
    $("#progressbar li").eq($("fieldset").index(next_fs)).addClass("active");

    //show the next fieldset
    next_fs.show(); 
    //hide the current fieldset with style
    current_fs.animate({opacity: 0}, {
        step: function(now, mx) {
            //as the opacity of current_fs reduces to 0 - stored in "now"
            //1. scale current_fs down to 80%
            scale = 1 - (1 - now) * 0.2;
            //2. bring next_fs from the right(50%)
            left = (now * 50)+"%";
            //3. increase opacity of next_fs to 1 as it moves in
            opacity = 1 - now;
            current_fs.css({'transform': 'scale('+scale+')'});
            next_fs.css({'left': left, 'opacity': opacity});
        }, 
        duration: 800, 
        complete: function(){
            current_fs.hide();
            animating = false;
        }, 
        //this comes from the custom easing plugin
        easing: 'easeInOutBack'
    });
});

$(".previous").click(function(){
    if(animating) return false;
    animating = true;

    current_fs = $(this).parent();
    previous_fs = $(this).parent().prev();

    //de-activate current step on progressbar
    $("#progressbar li").eq($("fieldset").index(current_fs)).removeClass("active");

    //show the previous fieldset
    previous_fs.show(); 
    //hide the current fieldset with style
    current_fs.animate({opacity: 0}, {
        step: function(now, mx) {
            //as the opacity of current_fs reduces to 0 - stored in "now"
            //1. scale previous_fs from 80% to 100%
            scale = 0.8 + (1 - now) * 0.2;
            //2. take current_fs to the right(50%) - from 0%
            left = ((1-now) * 50)+"%";
            //3. increase opacity of previous_fs to 1 as it moves in
            opacity = 1 - now;
            current_fs.css({'left': left});
            previous_fs.css({'transform': 'scale('+scale+')', 'opacity': opacity});
        }, 
        duration: 800, 
        complete: function(){
            current_fs.hide();
            animating = false;
        }, 
        //this comes from the custom easing plugin
        easing: 'easeInOutBack'
    });
});

$(".submit").click(function(){
    return false;
})


</script>

    联系人详细信息
  • 地址详情
  • 个人资料
  • 身份详细信息
创建您的帐户 这是第一步 选择性别 男性 女性 社会概况 你在社交网络上的存在 选择状态 1. 2. 选择地区 1. 2. 选择宪法 1. 2. 选择曼达尔 1. 2. 选择Pincode 1. 2. 个人资料 我们永远不会卖掉它 选择婚姻状况 1. 2. 选择教育 1. 2. 选择语言 1. 2. 选择经验 1. 2. 个人资料 我们永远不会卖掉它 选择血型 1. 2. 两轮车 1. 2. 照片: 签名: /*自定义字体*/ @导入url(http://fonts.googleapis.com/css?family=Montserrat); /*基本重置*/ *{边距:0;填充:0;} html{ 身高:100%; /*仅映像BG回退*/ 背景:url('http://thecodeplayer.com/uploads/media/gs.png'); /*背景=渐变+图像模式组合*/ 背景: 线性梯度(rgba(196,102,0,0.2),rgba(155,89,182,0.2),, url('http://thecodeplayer.com/uploads/media/gs.png'); } 身体{ 字体系列:蒙特塞拉特、arial、verdana; } /*表单样式*/ #msform{ 宽度:400px; 保证金:50px自动; 文本对齐:居中; 位置:相对位置; } #msform字段集{ 背景:白色; 边界:0无; 边界半径:3px; 盒影:0.15px 1px rgba(0,0,0,0.4); 填充:20px 30px; 框大小:边框框; 宽度:80%; 利润率:0.10%; /*将场集堆叠在彼此上方*/ 位置:绝对位置; } /*隐藏除第一个字段集以外的所有字段集*/ #msform字段集:非(:类型的第一个){ 显示:无; } /*投入*/ #msform输入,#msform文本区域{ 填充:10px; 边框:1px实心#ccc; 边界半径:3px; 边缘底部:10px; 宽度:100%; 框大小:边框框; 字体系列:蒙特塞拉特; 颜色:#2C3E50; 字体大小:13px; } /*钮扣*/ #msform.action按钮{ 宽度:100px; 背景:#27AE60; 字体大小:粗体; 颜色:白色; 边界:0无; 边界半径:1px; 光标:指针; 填充:10px 5px; 利润率:10px 5px; } #msform.action按钮:悬停,#msform.action按钮:焦点{ 盒影:0 2倍白色,0 0 3倍#27AE60; } /*标题*/ .fs标题{ 字体大小:15px; 文本转换:大写; 颜色:#2C3E50; 边缘底部:10px; } .fs副标题{ 字体大小:正常; 字体大小:13px; 颜色:#666; 边缘底部:20px; } /*进度条*/ #进度条{ 边缘底部:30px; 溢出:隐藏; /*CSS计数器对步骤进行编号*/ 计数器复位:步骤; } #李国宝{ 列表样式类型:无; 颜色:白色; 文本转换:大写; 字体大小:9px; 宽度:24.33%; 浮动:左; 位置:相对位置; } #李:以前{ 内容:计数器(步骤); 反增量:步进; 宽度:20px; 线高:20px; 显示:块; 字体大小:10px; 颜色:#333; 背景:白色; 边界半径:3px; 保证金:0自动5px自动; } /*progressbar连接器*/ #李:之后呢{ 内容:''; 宽度:100%; 高度:2倍; 背景:白色; 位置:绝对位置; 左-50%; 顶部:9px; z索引:-1;/*将其放在数字后面*/ } #李:第一个孩子:之后{ /*第一步之前不需要接头*/ 内容:无; } /*将活动/完成的步骤标记为绿色*/ /*台阶和台阶前的接头编号=绿色*/ #progressbar li.活动:之前,#progressbar li.活动:之后{ 背景:#27AE60; 颜色:白色; } #msform select{ 填充:10px; 边框:1px实心#ccc; 边界半径:3px; 边缘底部:10px; 宽度:100%; 框大小:边框框; 字体系列:蒙特塞拉特; 颜色:#2C3E50; 字体大小:13px; } 标签{ 浮动:左; 字体大小:14px; 颜色:#f50a69; } //jQuery时间 var当前值、下一个值、上一个值//字段集 变量左,不透明度,比例//我们将设置动画的字段集属性 var动画//防止快速多点单击故障的标志 $(“.next”)。单击(函数(){ 如果(动画)返回false; 动画=真; 当前_fs=$(this.parent(); next_fs=$(this.parent().next(); //使用next_fs的索引在progressbar上激活下一步 $(“#progressbar li”).eq($(“字段集”).index(next_fs)).addClass(“活动”); //显示下一个字段集 next_fs.show(); //使用样式隐藏当前字段集 当前动画({opacity:0}{ 步骤:函数(现在是mx){ //随着当前_fs的不透明度降低到0-存储在“now”中 //1.将电流放大至80% 比例=1-(1-现在)*0.2; //2.从右侧带下一个_fs(50%) 左=(现在是*50)+“%”; //3.当下一个_fs移入时,将其不透明度增加到1