我正在使用Twitter Bootstrap模态窗口。只是因为js错误导致模态窗口不起作用 - 有一个后退页面。如果模态窗口没有加载,我怎样才能确保加载页面?
链接到开放模态窗口
<a href="#login-modal" data-toggle="modal" data-target="#login-modal">Login</a>
模态窗口
<!-- Login Modal -->
<div id="login-modal" class="modal hide fade landing-modal" tabindex="-2" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h3>Login</h3>
</div>
<div class="modal-body">
<form>
<div class="control-group">
<label for="email">Email Address</label>
<div class="controls">
<input class="input-medium" name="email" type="text" />
</div>
</div>
<div class="control-group">
<label for="password">Password</label>
<div class="controls">
<input class="input-medium" name="password" type="password" />
</div>
</div>
<div class="control-group">
<label class="checkbox">
<input type="checkbox" value="">
Remember me</label>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="button">
Login
</button>
</div>
</div>
</form>
</div>
</div>
当我尝试将链接添加到href时,如下所示
<a href="login.html" data-toggle="modal" data-target="#login-modal">Login</a>
模态窗口中的链接页面加载!!
答案 0 :(得分:27)
查看bootstrap-modal.js中的第223行,揭示了正在发生的事情:
, option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
使用数据api时,模态检查href
属性是否不是id,并将其设置为remote
选项的值。这会导致页面最初加载data-target
内容,然后在href
内容之后加载remote
内容。
因此,为避免href内容加载到模态中,您需要在链接上指定data-remote="false"
:
<a href="/some-login-page.html" data-toggle="modal" data-target="#login-modal" data-remote="false">Login</a>
答案 1 :(得分:0)
Modal插件优先于data-target
属性。然后,您可以使用href
指向所需的后备链接。由于Modal插件在匹配选择器preventDefault
的单击事件上调用[data-toggle="modal"]
,因此只有在禁用JavaScript(或未加载Modal插件)时才会跟踪链接。
但要记住的一件事是,Modal插件确实使用href
属性来加载远程内容。要绕过该功能的激活,只需在href
值的末尾添加“#”。
<a href="/some-login-page.html#" data-toggle="modal" data-target="#login-modal">Login</a>