javascript - 在物化模式打开 3 秒后,如何使用 javascript 打开新的 html

标签 javascript jquery html modal-dialog materialize

我正在创建一个“登录”页面,一旦用户按下登录按钮,就会出现一个模式,显示“登录成功”。我想要它做的是,模式出现 3 秒后,它会自动打开我的 profile.html 页面。

我正在使用 Materialise 模态。

这是我到目前为止的代码:

<div class='row'>
  <div class='input-field col s12'>
    <input class='validate' type='email' name='email' id='txtEmail' />
    <label for='email'>Enter your email</label>
  </div>
</div>
<div class='row'>
  <div class='input-field col s12'>
    <input class='validate' type='password' name='password' id='txtPassword' />
    <label for='password'>Enter your password</label>
  </div>
</div>
<div class='row'>
  <div class="col s12">
    <button data-target="modal2" id="btnLogin" type='submit' class='col s12 btn startup modal-trigger'>Login</button>
  </div>
<!-- Login SUCCESS Modal Structure -->
<div id="modal2" class="modal">
  <div class="modal-content" id="modal2content">
    <div class="row">
      <div class="col s5 offset-s4">
        <i class="success large material-icons">check</i>
      </div>
   </div>
   <p class="success">Login Successful!</p>
 </div>

我已经有了 Materialize javascript 来运行模态:

$(文档).ready(函数(){ $('.modal').modal(); });

但我需要能够在模式运行后打开 profile.html。 任何想法或链接或其他设置方法将不胜感激。

最佳答案

Bootstrap 模式有 events 。您可以使用 shown_bs_modal 事件。

$('.modal').on('shown.bs.modal', function(e) {

  // Wait 3 seconds
  setTimeout(function() {

    window.location.href = 'url_of_your_profile_page';

  }, 3000);
});

显示模式后,等待 3 秒钟,然后导航到您的个人资料页面网址。

编辑:由于您似乎使用的是物化模态而不是引导模态,因此这是一个新版本。 Materialise 模态有一个 onOpenEnd 事件。

$('.modal').modal({

  onOpenEnd: function() {

    // Wait 3 seconds
    setTimeout(function() {

      window.location.href = 'url_of_your_profile_page';

    }, 3000);
  }
});

该库的早期版本显然使用 ready 而不是 onOpenEnd。请参阅documentation获取最新版本。

概念验证示例:显示模式后触发警报。

$(document).ready(function() {

  $('.modal').modal({
  
    onOpenEnd: function() {
    
      alert('modal has opened');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css">

<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/js/materialize.min.js"></script>

<!-- Modal Trigger -->
<a class="waves-effect waves-light btn modal-trigger" href="#modal1">Modal</a>

<!-- Modal Structure -->
<div id="modal1" class="modal">
  <div class="modal-content">
    <h4>Modal Header</h4>
    <p>A bunch of text</p>
  </div>
  <div class="modal-footer">
    <a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
  </div>
</div>

关于javascript - 在物化模式打开 3 秒后,如何使用 javascript 打开新的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50280566/

相关文章:

html - CSS使背景图像即使在不同的浏览器尺寸下也能保持原位

php - 网站上的 JPF,如何让它正常工作?

javascript - 动态添加的 <option> 元素在 UI 上不可见

javascript - Immutable Js - 使用不可变 js 更新深层嵌套树

JavaScript 像 jQuery 一样将变量作为对象和函数调用

javascript - 立即显示所有验证错误,并且在修复之前不允许提交

javascript - 如何使用 Ajax 连接到 Java servlet?

javascript - 在从查找返回之前等待 mongo 写入

javascript - Angularjs:如何组织一个大项目代码?

html - flexbox 中的中心垂直对齐