Динамический размер модала в bootstrap

#javascript #jquery #html #css #twitter-bootstrap

#javascript #jquery #HTML #css #twitter-bootstrap

Вопрос:

Я новичок в этой области, поэтому я объясню вам, чего я пытаюсь достичь. На моей веб-странице я хочу, чтобы при нажатии кнопки отображалась всплывающая карточка, в которую я должен ввести некоторую информацию. Я использую bootstrap в моем текущем проекте. Итак, что я нашел до сих пор, так это использование модала. Итак, когда всплывает карточка, нужно заполнить несколько полей (простые строки) и выбрать дату. Перейдя к коду, который я до сих пор:

 <!-- Trigger the modal with a button -->
<button type="button" class="btn btn-lg btn-warning addButton" data-toggle="modal" data-target="#myModal">New Employee</button>
 <!-- Modal -->
 <div id="myModal" class="modal fade" role="dialog">
        <div class="modal-dialog modal-sm">
            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">amp;times;</button>
                    <h4 class="modal-title">New FRISS employee</h4>
                </div>
                <div class="modal-body">

                    <input type="text" class="form-control insertInfo" placeholder="Name" />
                    <input type="text" class="form-control insertInfo" placeholder="Surname" />
                    <input type="text" class="form-control insertInfo" placeholder="Date of birth" />
                    <input type="text" class="form-control insertInfo" placeholder="Role" />
                    <input type="text" class="form-control insertInfo" placeholder="Email address" />



                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Done</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>

        </div>
    </div>
  

Первая проблема на этом этапе заключается в том, что я хотел бы изменить ширину модала (которая слишком велика). После этого мне нужна не строка в качестве даты, а средство выбора даты, и снова я нашел через bootstrap этот фрагмент кода:

 <div class="container">
    <div class="row">
        <div class='col-sm-6'>
            <div class="form-group">
                <div class='input-group date' id='datetimepicker1'>
                    <input type='text' class="form-control" />
                    <span class="input-group-addon">
                        <span class="glyphicon glyphicon-calendar"></span>
                    </span>
                </div>
            </div>
        </div>
        <script type="text/javascript">
            $(function () {
                $('#datetimepicker1').datetimepicker();
            });
        </script>
    </div>
</div>
  

К сожалению, если я использую его, все в модале смешивается без какого-либо порядка, и мне не удается поддерживать все в чистоте и упорядоченности. Можете ли вы, пожалуйста, помочь мне? Заранее спасибо

Ответ №1:

Либо вы не добавили ссылки cdn в css datepicker css, либо, я думаю, вы копируете и вставляете весь код datepicker вместо введенной даты рождения.

Вам не нужно копировать весь код с помощью контейнера div, только код из

 <div class='input-group date' id='datetimepicker1'>
  

Также убедитесь, что вы добавили ссылки на файлы datetimepicker css и js в свой тег head.

Вот в качестве примера использование вашего кода. Проверьте теги link и script вверху и поместите их в свой код в точно таком же порядке.

http://codepen.io/Nasir_T/pen/ALNkaK

Также для настройки ширины модального элемента. Просто добавьте класс bootstrap по умолчанию .modal-content { в свой пользовательский css-файл или на эту страницу и добавьте свойство width для его настройки.

Надеюсь, это поможет.

[Править]

По вашему запросу на интервал в комментариях: Что вам нужно было сделать, это выбрать весь контейнер каждого элемента управления и применить поля только к его верхней и нижней части. В этом случае у вас уже был добавлен класс insertInfo во входных данных, поэтому просто добавьте следующий класс в свой css-файл.

 .insertInfo {
  margin: 10px 0;
}
  

Также добавьте этот класс в datepicker div в модальном коде, поскольку он отделен от входных данных, и нам нужно применить ко всей строке datetimepicker, а не только к входным данным в ней, так что

 <div class='input-group date insertInfo' id='datetimepicker1'>
  

Я также обновил ссылку codepen, чтобы вы могли проверить, работает ли она там. Удачного кодирования 🙂

Комментарии:

1. Большое вам спасибо за ваш ответ и ваш пример кода, который делает именно то, что я хочу .. но у меня все еще есть некоторая проблема. Я скопировал вставленный ваш код, а также все ваши ссылки на css и js в head .. но это все еще не работает. Первый шаг, который я должен решить, — это код ошибки, который он мне выдает: Неперехваченный TypeError: $ (…).datetimepicker не является функцией (…) . Но я добавил точно такие же ссылки, как у вас, и, таким образом, я включаю datetimepicker.js .

2. Куда в коде вы помещаете ссылку. Снимок вашего файла кода может помочь определить, что находится не в том месте.

3. Я напутал со ссылками, простите меня! Все работает действительно отлично.. вы были действительно полезны! Большое спасибо! Если я могу задать вам последний вопрос: я бы хотел, чтобы строки в модале имели некоторое пространство друг внутри друга. Я пытался сделать это, применив отступ в несколько пикселей, но это разрушает отступ. Не могли бы вы любезно подсказать мне, как это сделать?

4. Я добавил в решение для интервала в ответе выше. Удачного кодирования 🙂

Ответ №2:

просто добавьте id=»datetimepicker1″ в ваше поле ввода

и добавьте этот код java script в конце страницы

 <script>
$(document).ready(function () { 
    $('#datetimepicker1').datetimepicker(
    { 
            autoclose: true,
            //startDate : today,
            //endDate:today,
            format: "mm-dd-yyyy",
            minView:2
     })
        .on('click', function (e) {  
             setTimeout(function () {
                 $('#datetimepicker1').focus();
             }, 10);
        });           
})
</script>