【问题标题】:Bootstrap modal stopping checkbox from selecting从选择中引导模式停止复选框
【发布时间】:2014-11-15 16:41:45
【问题描述】:

我的页面底部有一个复选框。当用户单击它时,我希望显示一个弹出窗口。除了切换复选框外,一切正常。当我使用弹出窗口下方的代码单击复选框时,但该框未选中。知道为什么吗?

jQuery:

$('#confirm-final').on('show.bs.modal', function (e) {
    $(this).find('.danger').attr('href', $(e.relatedTarget).data('href'));
});

复选框:

<label class="checkbox-inline"><asp:CheckBox ID="chkFinalSubmission" runat="server" data-toggle="modal" data-target="#confirm-final"/>Final Submission</label>

弹出窗口:

<div class="modal fade" id="confirm-final" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            Final Submission
        </div>
        <div class="modal-body">
            If you check final submission and submit this ad note, <strong>you will not be able to change it anymore.</strong> It will be permanently stuck in readonly mode.
        </div>
        <div class="modal-footer">
            <asp:Button ID="btnConfirmFinal" runat="server" Text="Got it" class="btn btn-default" data-dismiss="modal"/>
        </div>
    </div>
</div>

【问题讨论】:

  • 对不起,如果我没有完整的页面,我不能帮助更多。完整的技巧在于它的渲染方式,以及引导程序期望得到的渲染。
  • 如果你想看的话,这里是整页:pastebin.com/cqDhWEgm

标签: javascript jquery asp.net twitter-bootstrap checkbox


【解决方案1】:

至于为什么,触发打开模态的事件包含e.preventDefault(),它取消了通过单击模态调用元素可能发生的任何事件。如果它是一个链接,则不会遵循 href,而是打开模式。如果是复选框,则取消实际检查。这是内置行为,您无法阻止它。

如何解决:

在 Bootstrap 3 中,您可以访问触发模式的事件的 relatedTarget 属性。由于您的函数已经使用 relatedTarget 我假设您确实使用了 Bootstrap 3。您可以将以下规则添加到现有的 jquery 函数中:

$(e.relatedTarget).prop('checked', !$(e.relatedTarget).prop('checked'));

(这会将复选框设置为与已经存在的“选中”状态相反的状态,也就是每次单击时都会打开和关闭它。

另外,您确定其余代码可以正常工作吗?您指的是$(e.relatedTarget).data('href'),但您的复选框没有data-href。你的意思是data('target') 吗?

【讨论】:

  • 感谢您的回复和解释。网络编程对我来说是新的,所以这是一个巨大的帮助!是的 - 我的意思是data('target') ...不幸的是,它仍然不起作用。它显示了模式并且复选框保持不变 - 相同 - 未选中。
  • 您是否在控制台中查看过是否收到错误消息?打开浏览器的开发工具(通常是 F11,或 mac 上的 cmd-alt-i),然后单击控制台选项卡。也许这会告诉你一些事情。如果它没有说什么,请将我的行替换为:console.log(e.relatedTarget) 并在您打开模式时发布它所说的内容)
  • 嗯,看来我错了,Bootstrap 3 实际上不应该取消检查,那只是在 Bootstrap 2.3 中。你还在用哪个版本?也许还有另一个原因您的复选框不起作用。
  • 我使用的是 3.0.当我单击复选框时,我在控制台中看不到任何内容......所以我猜它永远不会被调用
  • 您能否在您的网站上或在 jsfiddle.net 上复制出现这种情况的实际工作示例?
猜你喜欢
  • 2014-04-02
  • 1970-01-01
  • 2014-05-30
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
相关资源
最近更新 更多