2017-10-20 88 views
0

我有一個表單,我有一個隱藏的輸入只有驗證,如果輸入密碼字段的問題。jQuery驗證隱藏的輸入,只有當其他字段有價值

<div class="form-group"> 
    <label for="password" class="control-label col-sm-4">Password: </label> 
    <div class="col-lg-6"> 
     <input type="password" placeholder="Your Password" id="password" name="password" class="form-control" autocomplete="off"> 
    </div> 
</div> 

<div class="form-group"> 
    <label class="control-label col-sm-4">Password Strength</label> 
    <div class="col-sm-6" id="password-meter"> 
     <div class="progress"> 
      <div class="progress-bar" id="password-meter-progress"></div> 
      <input type="hidden" name="password_strength" id="password_strength"> 
     </div> 
    </div> 
</div> 

<div class="form-group"> 
    <label for="confirm_password" class="control-label col-sm-4">Confirm Password: </label> 
    <div class="col-lg-6"> 
     <input type="password" placeholder="Confirm Password" id="confirm_password" name="confirm_password" class="form-control" autocomplete="off"> 
    </div> 
</div> 

如果我點擊一個像這樣的按鈕,它什麼都不做。我試過註銷v.errorList,但什麼也沒看到有

$('#button').click(function() { 
    if (v.form()) { 
     $('.frm').hide('fast'); 
     $('#sf2').show('slow'); 
    } 
}); 

這裏是我的驗證碼

function isPasswordPresent() { 
    return $('#password').val() !== ''; 
} 
var v = $('#onboardingform').validate({ 
    ignore: [], 
    rules: { 
     password: { 
      required: true, 
      minlength: 6, 
     }, 
     confirm_password: { 
      required: true, 
      minlength: 6, 
      equalTo: "#password", 
     }, 
     password_strength: { 
      min: { 
       depends: isPasswordPresent, 
       param: 60 
      } 
     } 
    }, 
    messages: { 
     password_strength: { 
      min: 'Enter a strong password' 
     } 
    }, 
    errorElement: "span", 
    errorClass: "help-inline", 
}); 
+0

不知道,如果你已經囊括了所有你的代碼,但如果你有,你的目標有一個按鈕按鈕的ID,但不存在具有該ID的按鈕。點擊事件內部的表單也是如此。 –

+0

這不是問題。我發現問題是忽略:[] ,.如果我刪除表單驗證正常,但我的依賴規則不再起作用 –

+0

這沒有任何意義。 '忽略:[]'只是意味着什麼都不會理睬;驗證隱藏的字段。 – Sparky

回答

0

報價comment

「我發現這個問題是ignore: [],。如果我刪除表單驗證罰款,但我的依賴規則不再有效「

這沒有任何意義。 ignore: []只是意味着什麼都不要忽視;驗證所有字段,包括所有隱藏字段。正如您的標題所示,如果您想驗證隱藏字段,則必須相應地設置ignore選項,例如[]


此外,不需要編寫外部函數來測試字段是否包含值。該插件爲此提供了:filled:blank選擇器。

使用$('#password').is(':filled')來查看它是否已填寫,或者您可以使用!$('#password').is(':blank')以確保它不是空白。

password_strength: { 
    min: { 
     depends: function(element) { 
      return $('#password').is(':filled'); 
      // return !$('#password').is(':blank'); 
     }, 
     param: 60 
    } 
} 

jqueryvalidation.org/category/selectors/

證明了概念演示jsfiddle.net/g6hq8o7y/