3

正如您在这个jQuery中看到的,我有一个 Boostrap 弹出框,它可以通过外部点击以及点击“x”来关闭。

但是,当此弹出框放置在表单中时,它也会提交表单。

有没有办法在点击后不提交表单的情况下获得这个可关闭的弹出窗口的功能?

HTML:

<form action="quote-calculator.php" method="post">
    <div class="bs-docs-example" style="padding-bottom: 24px;">
      <a href="#" class="more-info btn btn-large btn-danger" data-toggle="popover" data-content="And here's some amazing content. It's very engaging. right?">Click to toggle popover</a>
    </div>
</form>

jQuery:

        var isVisible = false;
        var clickedAway = false;

        $('.btn-danger').popover({
                html: true,
                trigger: 'manual'
            }).click(function(e) {
                $(this).popover('show');
            $('.popover-content').append('<button class="close" style="position: absolute; top: 0; right: 6px;">&times;</button>');
                clickedAway = false
                isVisible = true
                e.preventDefault()
            });

        $(document).click(function(e) {
          if(isVisible & clickedAway)
          {
            $('.btn-danger').popover('hide')
            isVisible = clickedAway = false
          }
          else
          {
            clickedAway = true
          }
        });
4

2 回答 2

3

将您的按钮元素更改为锚元素。

http://jsfiddle.net/LRCNm/8/

$('.popover-content').append('<a class="close" style="position: absolute; top: 0; right: 6px;">&times;</a>');
                    clickedAway = false
                    isVisible = true
                    e.preventDefault()
                });
于 2013-03-25T12:59:34.273 回答
1

您需要在preventDefault()此处添加:

        $(document).click(function(e) {
          if(isVisible & clickedAway)
          {
            $('.btn-danger').popover('hide')
            isVisible = clickedAway = false
            e.preventDefault()
          }
          else
          {
            clickedAway = true
          }
        });
于 2013-03-25T12:47:50.017 回答