登录失败时重新打开登录模式

时间:2016-12-01 09:47:31

标签: jquery ajax laravel

我登录并使用Laravel Auth和materializecss模态注册模态(它们的工作方式与Bootstrap模态相同)。除了一件事,一切都很好。

我提交表单时有一个检查:电子邮件和密码是否匹配?电子邮件是否存在于数据库等中。

当其中一个检查失败时,用户将无法登录,并且错误将存储在php数组中:$ errors。

问题是当表单提交时模式关闭,这在登录良好时很好。但是当登录失败并出现错误时。应该重新打开模态,并且必须在模态中显示错误。

我尝试了很多东西,但我对JS和jQuery没有多少经验。我希望有人可以提供帮助并解释它是如何运作的?

我用这段代码解决了这个问题:

    if ($('div#login-email').hasClass('has-error')) {
        $('#login-modal').modal('open');
    }

    if ($('div#login-password').hasClass('has-error')) {
        $('#login-modal').modal('open');
    }

Laravel在表单组中添加了一个错误类,在那里你做错了。所以当没有类的div:has-error时,一切都很好。

如果有一个类有错误的div,那么在某些时候你失败了。所以模态应该重新打开。

3 个答案:

答案 0 :(得分:1)

您需要从表单提交事件中重新打开模型,因为该代码仅在表单提交时执行。

var errors = {{$errors->all()}};
$(function() {
    if(errors.length) {

         alert('There is an error!');

         $('#modal').modal('open');
     }
});

答案 1 :(得分:0)

您需要在刀片页面中添加代码

@if (session('openLogin') || Session::has('errors'))
        <script>
            $('#modalLogin').modal('show');
        </script>
@endif

和web.php

Route::get('auth/login',function () {

    return redirect('/')->with('openLogin',true);

});

答案 2 :(得分:0)

只需将此代码添加到刀片页上即可验证是否存在错误,然后重新打开模式窗体。

@if ($error = $errors->first('email'))
  <script>
    $(document).ready(function() {
      $("#myModal").modal("show");
    });
  </script>
@endif