【问题标题】:Is it possible to launch bootstrap modal on pagination click是否可以在分页点击时启动引导模式
【发布时间】:2018-06-07 06:22:14
【问题描述】:

我想实现一个目标,但我不知道这是否可能。我有一个分页,而不是单击后导航到新页面,我希望它打开一个用引导程序制作的模式。当我删除分页时,模式会正确打开,但它不能与分页一起使用。如何更改分页 jquery 函数以使分页和模态一起工作?

或者是否有其他方法可以做到这一点,任何建议将不胜感激。

谢谢

1- 分页

<a id="pagination-obstetrico"  data-toggle="modal" data-target="#view" href="<?php echo base_url("admin/data_ssr_by_id/$row->idssr")?>"></a>

2- 模态调用

<div class="modal fade" id="ver_ssr"  role="dialog" >
<div class="modal-dialog modal-lg" >
<div class="modal-content" >

</div>
</div>
</div>

3-分页功能

$('#pagination-obstetrico').twbsPagination({
totalPages: 5,
// the current page that show on start
startPage: 1,

// maximum visible pages
visiblePages: 5,

initiateStartPageClick: true,

// template for pagination links
href: false,

// variable name in href template for page number
hrefVariable: '{{number}}',

// Text labels
first: 'First',
prev: 'Previous',
next: 'Next',
last: 'Last',

// carousel-style pagination
loop: false,

// callback function
onPageClick: function (event, page) {
   $('.page-active').removeClass('page-active');
  $('#page'+page).addClass('page-active');
},

// pagination Classes
paginationClass: 'pagination',
nextClass: 'next',
prevClass: 'prev',
lastClass: 'last',
firstClass: 'first',
pageClass: 'page',
activeClass: 'active',
disabledClass: 'disabled'

});

5-External resources for the pagination

6- 我的父页面

  • 按钮列表是分页,父页面是表单,分页是用户填写表单的次数。当我点击分页链接时,我应该打开一个模式来编辑与分页 ID 相关的数据。

7- 不使用分页时的模态截图,请注意,当我使用分页时,模态无法启动。

谢谢

【问题讨论】:

  • «但它不能与分页一起使用»...您知道为什么吗?一些控制台错误?
  • 我认为 data-toggle="modal" data-target="#ver_ssr" 超出了分页功能。
  • 模态的 HTML 标记应该在 #pagination-obstetrico 容器之外。
  • 我刚试了,还是一样?

标签: jquery twitter-bootstrap pagination


【解决方案1】:

这是一个开始

$('#page-selection').bootpag({
  total: 10,
  href: "#pro-page-{{number}}"
}).on("page", function(event, /* page number here */ num) {
  $("#content").html("Page " + num); // some ajax content loading...
});

$(function() {
  $("#page-selection .pagination.bootpag li a")
    .attr('data-toggle', 'modal')
    .attr('data-target', '#myModal');
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootpag/1.0.7/jquery.bootpag.js"></script>

<div id="content"></div>
<div id="page-selection"></div>


<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        <div id="phpContent"></div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

每个 OP 评论的附录:

我必须使用链接打开模态,每个模态页面都是根据href中的id查询的结果,例如:idssr")?>">。我怎么能这样做?

第一个 php 脚本是服务器端。因此,在呈现页面时,您的所有链接都是已知的。 Bootpag 动态呈现客户端,因此理想情况下,如果在初始化时您可以映射一个 php 定义的 javascript 结构,bootpag init 可以访问该结构以将 url 映射到寻呼机按钮

一种方法是编写一些创建 javascript 简单对象的 php 脚本,最终结果如下所示:

    var pagerUrls = {
        "1": "url1",
        "2": "url2",
        "3": "url3",
        ...
        "n": "urln"
    };

然后在初始化期间你可以这样做:

    $(function() {
        $("#page-selection .pagination.bootpag li a")
            .attr('data-toggle', 'modal')
            .attr('data-target', '#myModal');

        $("#page-selection .pagination.bootpag li a")
            .each( function(){
                $(this).data('url', pagerUrls[ $(this).data("lp") ] );
            });


    });

现在设置按钮后,您可以使用“触发模式”,请参阅Varying modal content based on trigger button 了解更多信息。

这将允许一个模态显示基于触发按钮的动态内容。它利用 Bootstrap Modal show.bs.modal 事件,我在这里使用它来根据给定的 url 进行 ajax 调用。

注意:这个 ajax 调用很简单,因为我不知道你的 url 返回什么,我假设是 html,但你需要根据需要设置适当的 ajax 设置。

$('#myModal').on('show.bs.modal', function (event) {
  // Button that triggered the modal
  var button = $(event.relatedTarget); 

  var ajaxOptions = {
    url: button.data('url'),
    method: "POST",
    dataType: "html"
  };

  var request = $.ajax(ajaxOptions);
  var modal = $(this);
  modal.find('.modal-title').text('Results from ' + ajaxOptions.url );
  modal.find('.modal-body #phpContent').val(request);
});

注意:这些代码都没有经过测试,只是为了展示一个概念。您将不得不努力调试它。

但是现在我有一个问题要问你。
当您考虑到 bootpag 旨在完全填充 div 时,这是使用模式来显示动态内容的大量努力。

您使用模态框有什么原因吗?

编程愉快!

【讨论】:

  • 非常感谢 fnostro 的回复,我真的很感激,它确实教会了我。我试图修改您的代码,因为,我必须使用链接来打开模式,每个模式页面都是根据 href 中的 id 查询的结果,例如:idssr")?>">.我怎么能这样做?谢谢
  • 这里有很多要考虑的地方,我会根据您的评论添加到我的答案中以澄清。
  • 再次感谢您的宝贵时间。我必须使用模式,因为我的父页面结构需要我这样做。我将更新我的问题,以便您看到我的父页面的屏幕截图
猜你喜欢
  • 1970-01-01
  • 2021-03-10
  • 2012-05-01
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
相关资源
最近更新 更多