Twitter Bootstrap Datepicker trong cửa sổ phương thức


83

Tôi hiện đang sử dụng khung Twitter Bootstrap và khi sử dụng các cửa sổ phương thức, tôi không thể vượt qua các phần tử js để hoạt động như trình chọn ngày hoặc xác thực, mặc dù đã chọn và hiển thị thống nhất một cách chính xác. vui lòng xem cửa sổ phương thức của tôi bên dưới:

  <div class="modal hide in" id="newMember" style="display: block; " aria-hidden="false">
        <div class="modal-header">
          <button class="close" data-dismiss="modal" type="button">×</button>
          <h3>New Member Form</h3>
        </div>
        <form accept-charset="UTF-8" action="/players" class="form-horizontal" id="new_user" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="KdL6cc2Vb53qeMY+PpBUS70myT4HX1uWofMUBolLea8="></div>
          <div class="modal-body">
            <div class="widget-content nopadding">
              <div class="control-group">
                <label class="control-label" for="user_role">Role</label>
                <div class="controls">
                  <select id="user_role" name="user[role]" style="display: none; " class="chzn-done"><option value="">Select member role</option>
                  <option value="1">Player</option>
                  <option value="2">Coach</option>
                  <option value="3">Parent</option>
                  <option value="4">Manager</option>
                  <option value="5">Non-player</option></select><div id="user_role_chzn" class="chzn-container chzn-container-single" style="width: 222px; "><a href="javascript:void(0)" class="chzn-single"><span>Select member role</span><div><b></b></div></a><div class="chzn-drop" style="left: -9000px; width: 220px; top: 0px; "><div class="chzn-search" style=""><input type="text" autocomplete="off" style="width: 212px; "></div><ul class="chzn-results"><li id="user_role_chzn_o_0" class="active-result result-selected" style="">Select member role</li><li id="user_role_chzn_o_1" class="active-result" style="">Player</li><li id="user_role_chzn_o_2" class="active-result" style="">Coach</li><li id="user_role_chzn_o_3" class="active-result" style="">Parent</li><li id="user_role_chzn_o_4" class="active-result" style="">Manager</li><li id="user_role_chzn_o_5" class="active-result" style="">Non-player</li></ul></div></div>
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_full_name">Full name</label>
                <div class="controls">
                  <input id="user_first_name" name="user[first_name]" placeholder="First Name" size="30" type="text">
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_last_name">Last name</label>
                <div class="controls">
                  <input id="user_last_name" name="user[last_name]" placeholder="Last Name" size="30" type="text">
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_email">Email</label>
                <div class="controls">
                  <input id="user_email" name="user[email]" placeholder="Email Address" size="30" type="text">
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_date_of_birth">Date of birth</label>
                <div class="controls">
                  <input class="datepicker" data-date-format="dd/mm/yyyy" id="user_dob" name="user[dob]" placeholder="dd/mm/yyyy" readonly="readonly" size="30" type="text">
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_gender">Gender</label>
                <div class="controls">
                  <select id="user_gender" name="user[gender]" style="display: none; " class="chzn-done"><option value="">Select gender</option>
                  <option value="Male">Male</option>
                  <option value="Female">Female</option></select><div id="user_gender_chzn" class="chzn-container chzn-container-single" style="width: 222px; "><a href="javascript:void(0)" class="chzn-single"><span>Select gender</span><div><b></b></div></a><div class="chzn-drop" style="left: -9000px; width: 220px; top: 0px; "><div class="chzn-search" style=""><input type="text" autocomplete="off" style="width: 212px; "></div><ul class="chzn-results"><li id="user_gender_chzn_o_0" class="active-result result-selected" style="">Select gender</li><li id="user_gender_chzn_o_1" class="active-result" style="">Male</li><li id="user_gender_chzn_o_2" class="active-result" style="">Female</li></ul></div></div>
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_team">Team</label>
                <div class="controls">
                  <select id="user_team_id" name="user[team_id]" style="display: none; " class="chzn-done"><option value="">None</option>
                  <option value="4">Metro 3 East</option>
                  <option value="1">State League 3</option>
                  <option value="2">State League 4</option>
                  <option value="3">Metro 3 South</option>
                  <option value="5">Pennant E</option>
                  <option value="6">Under 9 White</option>
                  <option value="7">Under 9 Navy</option>
                  <option value="8">Under 13 Pennant South East</option>
                  <option value="9">Under 17 Pennant South East</option>
                  <option value="10">Under 15 South (1)</option>
                  <option value="11">Under 11 Pennant South East</option>
                  <option value="12">Under 11 South</option></select><div id="user_team_id_chzn" class="chzn-container chzn-container-single" style="width: 222px; "><a href="javascript:void(0)" class="chzn-single"><span>None</span><div><b></b></div></a><div class="chzn-drop" style="left: -9000px; width: 220px; top: 0px; "><div class="chzn-search" style=""><input type="text" autocomplete="off" style="width: 212px; "></div><ul class="chzn-results"><li id="user_team_id_chzn_o_0" class="active-result result-selected" style="">None</li><li id="user_team_id_chzn_o_1" class="active-result" style="">Metro 3 East</li><li id="user_team_id_chzn_o_2" class="active-result" style="">State League 3</li><li id="user_team_id_chzn_o_3" class="active-result" style="">State League 4</li><li id="user_team_id_chzn_o_4" class="active-result" style="">Metro 3 South</li><li id="user_team_id_chzn_o_5" class="active-result" style="">Pennant E</li><li id="user_team_id_chzn_o_6" class="active-result" style="">Under 9 White</li><li id="user_team_id_chzn_o_7" class="active-result" style="">Under 9 Navy</li><li id="user_team_id_chzn_o_8" class="active-result" style="">Under 13 Pennant South East</li><li id="user_team_id_chzn_o_9" class="active-result" style="">Under 17 Pennant South East</li><li id="user_team_id_chzn_o_10" class="active-result" style="">Under 15 South (1)</li><li id="user_team_id_chzn_o_11" class="active-result" style="">Under 11 Pennant South East</li><li id="user_team_id_chzn_o_12" class="active-result" style="">Under 11 South</li></ul></div></div>
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_mobile">Mobile</label>
                <div class="controls">
                  <input id="user_mobile" maxlength="10" name="user[mobile]" placeholder="i.e 0421813529" size="10" type="tel">
                  <span class="help-block">
                    <input name="user[private_mobile]" type="hidden" value="0"><div class="checker" id="uniform-user_private_mobile"><span><div class="checker" id="uniform-user_private_mobile"><span><input id="user_private_mobile" name="user[private_mobile]" type="checkbox" value="1" style="opacity: 0; "></span></div></span></div>
                    <a href="javascript:void(0)" class="tip-bottom" data-original-title="Normally, all members of the team can see this information. If you don't want teammates to see this information, just click this checkbox. (Note: Team managers will always see this information.)">Private</a>
                  </span>
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_manager_access">Manager access</label>
                <div class="controls">
                  <input name="user[manager]" type="hidden" value="0"><div class="checker" id="uniform-user_manager"><span><div class="checker" id="uniform-user_manager"><span><input id="user_manager" name="user[manager]" type="checkbox" value="1" style="opacity: 0; "></span></div></span></div>
                </div>
              </div>
              <div class="control-group">
                <label class="control-label" for="user_admin_access">Admin access</label>
                <div class="controls">
                  <input name="user[admin]" type="hidden" value="0"><div class="checker" id="uniform-user_admin"><span><div class="checker" id="uniform-user_admin"><span><input id="user_admin" name="user[admin]" type="checkbox" value="1" style="opacity: 0; "></span></div></span></div>
                </div>
              </div>
            </div>
          </div>
          <div class="modal-footer">
            <div class="pull-right">
              <input class="btn btn-primary" name="commit" type="submit" value="Create User">
              <a class="btn btn-danger" data-dismiss="modal" href="#">Cancel</a>
            </div>
          </div>
        </form>
      </div>

1
Bạn có thể đặt mã của mình vào jsFiddle không? Nó sẽ giúp mọi người kiểm tra nó dễ dàng hơn.
Sara

Đã không có bất kỳ vấn đề nhận được những plugin JQuery khác nhau và các khuôn khổ JavaScript làm việc cùng nhau: jsfiddle.net/mccannf/xekuW/9
mccannf

@Sara đây là jsfiddle jsfiddle.net/h7cMa
Boss Nass

@mccannf sau khi thực hiện một chút nghiên cứu về vấn đề của tôi, có vẻ như css đang gây ra sự cố. khi cửa sổ được nạp z-index tôi nghĩ rằng đó là, không cho phép các tooltips hoặc datepicker sẽ được hiển thị
Boss Nass

1
@ Paul'Whippet'McGuane, tôi khuyên bạn nên xem lại CSS và JS bootstrap của mình. Phương thức của bạn đang được đặt ở giá trị chỉ số z rất cao (99999). Chỉ cần so sánh jsfiddle của tôi ở trên với của bạn.
mccannf 21/10/12

Câu trả lời:


243

thêm z-index trên 1051 trong trình chọn ngày của lớp

thêm một cái gì đó như thế này trong trang hoặc css

<style>
.datepicker{z-index:1151 !important;}
</style>

1
Tuy nhiên, nó hoạt động nếu tôi đóng phương thức và mở lại thì nó sẽ báo lỗi.
Jnanaranjan

Đã lâu rồi và tôi đã quên nó rồi. Lấy làm tiếc!
Jnanaranjan

@Sujaysreedhar chỉ câu hỏi: tại sao chỉ số 1151? Tôi đã thay đổi nó để 1000000 sau đó nó vẫn làm việc nhưng lần này nó dispayed chỉ thêm góc trên cùng bên trái khi chạy script
smoothumut

Nó không quan trọng miễn là trên 1150 của nó, vì chỉ số z của cửa sổ phương thức là 1150 .. z-index xác định lớp nào sẽ hiển thị trên cùng miễn là lớp trên trong trường hợp của bạn 1000000 thì nó sẽ hoạt động
Sujay sreedhar

4
Nếu sử dụng bootstrap-datetimepicker.js chọn đúng là.ui-datepicker
jim smith

60

đối với tôi nó chỉ hoạt động với! important trong css

.datepicker {z-index: 1151 !important;}

7
Nó chỉ hoạt động đối với tôi với! Important nếu được thêm vào tệp css. Tuy nhiên, nếu bạn đặt phong cách trực tiếp vào đầu trang, nó có vẻ hoạt động tốt mà không cần thêm! Quan trọng nhưng điều này không tuyệt vời nếu công cụ chọn ngày sẽ được sử dụng trên các trang khác nhau.
alsobubbly

Hoàn hảo! Tôi đã thêm nó vào datepicker.css và hoạt động giống như một nét duyên dáng
javaboygo

11

Tôi sử dụng:

body.modal-open .datepicker {
    z-index: 1200 !important;
}

Theo cách này: nếu phương thức không được mở và bạn muốn bộ chọn ngày ở chỉ số z bình thường (trong trường hợp của tôi, tôi cần nó nằm trong trình đơn thả xuống, có chỉ số z là 1000), nó hoạt động.

Nếu phương thức đang mở, bộ chọn ngày cần phải vượt qua chỉ số z của phương thức (1040 hoặc 1050), vì vậy hãy sử dụng body.modal-openbộ chọn.

Tôi đang sử dụng Bootstrap 3.1.1


8

Theo http://www.daterangepicker.com/ (tùy chọn)

$('#dispatch_modal').on('shown.bs.modal', function() {
     $('input:text:visible:first').focus();
     // prepare datepicker
     $('.form_datepicker').daterangepicker({
          singleDatePicker: true,
          showDropdowns: true,
          parentEl: '#dispatch_modal'   
     });
});

`

parentEl đã giải quyết vấn đề của tôi ...


7

Thêm z-indz vào ui-datepicker lớp

<style>
    .ui-datepicker{ z-index:1151 !important; }
</style>

6

Như mccannf đã nói trong bình luận của mình :

Tôi khuyên bạn nên xem CSS và JS bootstrap của mình. Phương thức của bạn đang được đặt ở giá trị chỉ số z rất cao (99999). Chỉ cần so sánh jsfiddle của tôi ở trên với của bạn


4

Hãy thử với đoạn mã này.

.ui-datepicker{ z-index:1151 !important; }

sẽ giải quyết vấn đề khi bạn đang sử dụng bootstrap V3


1
.ui-datepickerđã làm việc cho tôi nơi .datepickerkhông làm việc.
Tim Ludwinski

3

Tôi nghĩ tốt hơn là nên thay đổi chức năng logic trong plugin. Xung quanh hàng 552 tôi thay đổi điều này:

            var zIndex = parseInt(this.element.parents().filter(function(){
                return $(this).css('z-index') !== 'auto';
            }).first().css('z-index'))+10;

vào cái này:

            var zIndex = parseInt(this.element.parents().filter(function(){
                return $(this).css('z-index') !== 'auto';
            }).first().css('z-index')) + 10 * 1000; //think is enought

3

Tôi đã gặp lỗi này, vì tôi đã cuộn xuống dưới cùng. Người chọn ngày đã sửa sai vị trí hàng đầu. Tôi chỉ sử dụng nó bây giờ như:

$('#myModal').on('show.bs.modal', function (e) {
            $(document).scrollTop(0);
});

và nó đang hoạt động tốt.


Nó làm việc cho tôi như một giải pháp tạm thời. Cảm ơn rât nhiều. Nhưng tôi muốn tìm giải pháp cuối cùng để làm cho trình chọn ngày của mình hiển thị chính xác, bất kể vị trí cuộn là gì. Tôi sẽ cố gắng tìm nó sau. Cám ơn bạn một lần nữa!!
Geziel Carvalho

1

bạn có thể thay đổi trong tệp css của bạn không bootstrap-timepicker/css/bootstrap-timepicker.css

từ

.bootstrap-timepicker-widget.dropdown-menu.open {
  display: inline-block;
}

đến

.bootstrap-timepicker-widget.dropdown-menu.open {
  display: inline-block;
  z-index:1151;
}

1

nếu bạn sử dụng bootstrap V3, hãy thử điều này.


    .bootstrap-datetimepicker-widget 
    {
        z-index: 1200   !important;
    }


1

Đối với Bootstrap 3.x và Ace Template wrapbootstrap

Datepicker và Timepicker trong Modal

<style>
    body.modal-open .datepicker {
        z-index: 1050 !important;
    }
    body.modal-open .bootstrap-timepicker-widget {
        z-index: 1050 !important;
    }
</style>

1
$('#effective_to').datepicker({
    dateFormat: "dd-mm-yyyy",
    changeMonth: true,
    changeYear: true,
    beforeShow: function() { 
        $('#ui-datepicker-div').addClass('datepicker');
    }
});

CSS

.datepicker {
    z-index: 100000 !important;
    display: block;
}

Công trình này hình thành nên tôi. Mặc dù tôi đã gọi mô hình qua ajax


1

Các giải pháp này hoạt động hoàn hảo để tôi hiển thị trình chọn ngày trên đầu trang của phương thức bootstrap.

http://jsfiddle.net/cmpgtuwy/654/

HTML

<br/>
<div class="wrapper">
Some content goes here<br />
Some more content.
<div class="row">
<div class="col-xs-4">

<!-- padding for jsfiddle -->
<div class="input-group date" id="dtp">
<input type="text" class="form-control" />  
<span class="input-group-addon">
  <span class="glyphicon-calendar glyphicon"></span>
</span>
</div>
</div>
</div>
</div>

Javascript

$('#dtp').datetimepicker({
format: 'MMM D, YYYY',
widgetParent: 'body'});


$('#dtp').on('dp.show', function() {
      var datepicker = $('body').find('.bootstrap-datetimepicker-widget:last');
      if (datepicker.hasClass('bottom')) {
        var top = $(this).offset().top + $(this).outerHeight();
        var left = $(this).offset().left;
        datepicker.css({
          'top': top + 'px',
          'bottom': 'auto',
          'left': left + 'px'
        });
      }
      else if (datepicker.hasClass('top')) {
        var top = $(this).offset().top - datepicker.outerHeight();
        var left = $(this).offset().left;
        datepicker.css({
          'top': top + 'px',
          'bottom': 'auto',
          'left': left + 'px'
        });
      }
    });

CSS

.wrapper {
height: 100px;
overflow: auto;}
body {
position: relative;
}

Điều này dành cho bootstrap-datetimepicker nhưng vẫn hữu ích.
Ben Trewern

0

Cố gắng thay đổi giá trị z-index cho .modal.modal-backdropnhỏ hơn .datepickergiá trị z-index.


0

Đối với BootsTrap Calender, hãy sử dụng cái này

/ CSS chỉ mục lịch /

.bootstrap-datetimepicker-widget {
   z-index:99999 !important;
}

0

hãy thử sử dụng mã này nó hoạt động cho tôi. nhân tiện, nó đến từ trang web này https://github.com/eternicode/bootstrap-datepicker/issues/464 .

$('#datepicker').datepicker().on('show', function () {
                var modal = $('#datepicker').closest('.modal');
                var datePicker = $('body').find('.datepicker');
                if (!modal.length) {
                    $(datePicker).css('z-index', 'auto');
                    return;
                }
                var zIndexModal = $(modal).css('z-index');
                $(datePicker).css('z-index', zIndexModal + 1);
            });

0

Fwiw. Necro nhưng vẫn còn.

cho <link href="https://cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.css" rel="stylesheet">

tôi cần

<style type="text/css">
.ui-timepicker-container {z-index: 1151 !important;}
</style>    

trong HEAD của tài liệu để nó chấp nhận ghi đè

Tôi đã thử hầu hết mọi giải pháp khác ở đây trước khi dùng đến giải pháp đó.


0
// re initialze datepicker
$(".bootstrap-datepicker").bsdatepicker({
    format: "yyyy-mm-dd",
    autoclose: true,
}).on('changeDate', function (ev) {
    $(this).bsdatepicker('hide');
});
//
$(".dropdown-menu").css({'z-index':'1100'});

2
Cảm ơn bạn về đoạn mã này, đoạn mã này có thể cung cấp một số trợ giúp hạn chế, tức thì. Một lời giải thích phù hợp sẽ cải thiện đáng kể giá trị lâu dài của nó bằng cách chỉ ra lý do tại sao đây là một giải pháp tốt cho vấn đề và sẽ giúp nó hữu ích hơn cho những người đọc trong tương lai với những câu hỏi tương tự khác. Vui lòng chỉnh sửa câu trả lời của bạn để thêm một số giải thích, bao gồm cả những giả định bạn đã đưa ra.
Ma Kết


-1

hãy để tôi giúp bạn,

bạn có thể cập nhật bootstrap.min.css của mình

trong menu thả xuống của lớp, bạn có thể thay đổi giá trị z-index thành 2000

vì vậy người chọn ngày sẽ hiển thị


-1

Bao bọc mã JavaScript trình kiểm tra dữ liệu của bạn bên trong

function pageLoad() {}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.