2017-07-31 25 views
0

我的following fiddle與我的問題。對於AJAX登錄表單不工作的bootbox + jQuery.validator

當我在模態空白表單上按登錄時,驗證器應該標記錯誤的字段。此外,表單應在驗證通過時提交。

在控制檯中沒有錯誤,它不起作用。下面

這條線在我的代碼似乎不起作用像它在this other fiddle

var form = $("#ajax_login_form"); 
form.validate(); 

我錯過了什麼?謝謝!

使用jQuery的驗證,我有以下JS:

/** 
* Login modal form 
*/ 
function loginModal() { 
    var content = $("#login_form").html(); 
    $("#login_form").detach(); 

    bootbox.dialog({ 
    title: "TEST", 
    message: content, 
    size: 'medium', 
    className: 'modal-primary', 
    buttons: { 
     success: { 
     label: "Sign in", 
     className: "btn btn-sm btn-primary", 
     callback: function() { 
      loginValidator(); 
      var form = $("#ajax_login_form"); 
      form.validate(); 
      return false; // keeps dialog open 
     } 
     } 
    }, 
    onEscape: function() { 
     logout(); 
    } 
    }); 
} 

/** 
* Validator for login AJAX form 
*/ 
function loginValidator() { 
    $("#ajax_login_form").validate({ 
    rules: { 
     email: { 
     required: true, 
     email: true 
     }, 
     password: { 
     required: true, 
     minlength: 8 
     } 
    }, 
    messages: { 
     email: "Please enter a valid email address", 
     password: { 
     required: "Please provide a password", 
     minlength: $.validator.format("Your password must be at least {0} characters long") 
     } 
    }, 
    submitHandler: function(form) { 
     alert("submitted!"); 
     return false; 
    } 
    }); 
} 

的HTML是:

<div id="login_form" style="display:none;"> 

    <form method="post" action="#" accept-charset="UTF-8" class="form" id="ajax_login_form" name="ajax_login_form"> 

    <div class="form-group"> 
     <input class="form-control" id="email" placeholder="Your email" name="email" type="email" /> 
    </div> 

    <div class="form-group"> 
     <input class="form-control" id="password" placeholder="Your password" name="password" type="password" value="" /> 
    </div> 

    <div class="form-group"> 
     <input type="checkbox" name="remember" /> 
     <label for="remember">&nbsp;Remember Me 
     </label> 
    </div> 
    </form> 
</div> 

回答

1

更換

form.validate(); 

form.valid(); 

這應該按預期工作(適用於我)。

編輯:與

form.submit(); 

更換,如果你想提交表單,如果它是有效的。

+0

嗨,是的驗證在空字段上工作,但表單不提交。但它使用'.validate()'完成我的另一個小提琴。 – TheRealPapa

+0

好的,然後用'.submit();'替換'.validate();'提交表單,如果它是有效的。 –

+0

它在另一個小提琴中起作用的原因是因爲它在第一個小提琴中使用'type =「按鈕」'按鈕時使用'type =「submit」'按鈕。 –