2017-08-09 64 views
0

我使自定義嚮導與驗證,但是當我點擊下一步按鈕來第一步檢查驗證,當點擊下一步按鈕時它不是檢查驗證並跳過該步驟。如何單擊下一步按鈕第一步檢查驗證和第二步不檢查驗證?

HTML是,如下所示:

<form> 
      <div class="form-main"> 
       <div class="form-input"> 
        <input type="text" id="fname" placeholder="First Name"> 
        <p id="error"></p> 
       </div> 
       <div class="form-input"> 
        <input type="text" id="lname" placeholder="Last Name"> 
        <p id="error"></p> 
       </div> 
       <div class="form-input"> 
        <input type="email" id="email" placeholder="Email"> 
        <p id="error"></p> 
       </div> 
       <div class="form-input"> 
        <input type="password" id="password" placeholder="Password"> 
        <p id="error"></p> 
       </div> 
       <div class="form-btn"> 
        <button type="button" id="prev" onClick="prevBtn(this);">prev</button> 
        <button type="button" id="next" onClick="nextBtn(this);">next</button> 
        <button type="submit" id="submit">submit</button> 
       </div> 
      </div>  
     </form> 

下面的腳本: 分離功能用於更新狀態表示找到索引和更新,驗證,下一個按鈕,一個按鈕。

$(window).on('load',function(){ 
    $('.form-main > .form-input:nth-child(1)').addClass('open'); 
    $('.form-main > .form-input:not(".open")').addClass('close').hide();  
}); 

var $div = $('.form-input'); 
var submits = $('#submit').css('display','none'); 
index = 0; 

function updateStatus(a){ 
    $div.eq(index).removeClass('current').addClass('close').hide(); 
    index += a; 

    $div.eq(index).addClass('current').removeClass('close').show(); 

    $('#next').toggle((index !==$div.length-1)); 
    $('#prev').toggle(index !== 0); 

    if(index == ($div.length - 1)){ 
     submits.toggle(index !== 0); 
    }else{ 
     submits.hide(); 
     } 
} 

var input = document.getElementsByTagName('input'); 
var error = document.getElementById('error'); 

function validation(){ 
    var inputValue = $(input).val(); 
    var inputType = $(input).attr('type'); 
     if(inputValue !== ''){ 
      updateStatus(+1); 
     }else{  
      error.innerHTML = "please enter the value"; 
     } 
} 

function nextBtn(){ 
    validation(); 
} 

function prevBtn(){ 
    updateStatus(-1); 
} 
+0

你有沒有注意到你不使用這個功能呢? 您是否注意到創建函數使用函數沒有任何意義? –

回答

0

所以我做了一些改變,並得到它的工作。

改變

var inputValue = $(input).val(); 

以下,因爲你需要檢查當前可見的元素

var inputValue = $('input:visible').val(); 

其次,你不能有多個元素error爲同一個ID,所以我就刪除了。 ID是唯一的。

$(window).on('load', function() { 
 
    $('.form-main > .form-input:nth-child(1)').addClass('open'); 
 
    $('.form-main > .form-input:not(".open")').addClass('close').hide(); 
 
}); 
 

 
var $div = $('.form-input'); 
 
var submits = $('#submit').css('display', 'none'); 
 
index = 0; 
 

 
function updateStatus(a) { 
 
    $div.eq(index).removeClass('current').addClass('close').hide(); 
 
    index += a; 
 

 
    $div.eq(index).addClass('current').removeClass('close').show(); 
 

 
    $('#next').toggle((index !== $div.length - 1)); 
 
    $('#prev').toggle(index !== 0); 
 

 
    if (index == ($div.length - 1)) { 
 
    submits.toggle(index !== 0); 
 
    } else { 
 
    submits.hide(); 
 
    } 
 
} 
 

 
var input = document.getElementsByTagName('input'); 
 

 
function validation() { 
 
    var inputValue = $('input:visible').val(); 
 
    var inputType = $(input).attr('type'); 
 
    if (inputValue !== '') { 
 
    updateStatus(+1); 
 
    } else { 
 
    $('input:visible').next().html("please enter the value"); 
 
    } 
 
} 
 

 
function nextBtn() { 
 
    validation(); 
 
} 
 

 
function prevBtn() { 
 
    updateStatus(-1); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <div class="form-main"> 
 
    <div class="form-input"> 
 
     <input type="text" id="fname" placeholder="First Name"> 
 
     <p></p> 
 
    </div> 
 
    <div class="form-input"> 
 
     <input type="text" id="lname" placeholder="Last Name"> 
 
     <p></p> 
 
    </div> 
 
    <div class="form-input"> 
 
     <input type="email" id="email" placeholder="Email"> 
 
     <p></p> 
 
    </div> 
 
    <div class="form-input"> 
 
     <input type="password" id="password" placeholder="Password"> 
 
     <p></p> 
 
    </div> 
 
    <div class="form-btn"> 
 
     <button type="button" id="prev" onClick="prevBtn(this);">prev</button> 
 
     <button type="button" id="next" onClick="nextBtn(this);">next</button> 
 
     <button type="submit" id="submit">submit</button> 
 
    </div> 
 
    </div> 
 
</form>

+0

非常感謝您的回答。 – Dhaval

+0

不客氣,如果它幫助你,請[upvote並接受答案](https://stackoverflow.com/help/someone-answers)快樂編碼! :) –