Почему не отображается заполнитель и иконка инпута даты в bootstrap на мобильных устройствах?

Ссылка скопирована
5 марта 2026 1 ответ

Ситуация следующая, собрал группу формы

<div class="col-md-6 form-group"> 	<div class="form-group mt-3 mt-md-0"> 		<div data-tip="Введите номер телефона указанный в договоре"> 			<input placeholder="+7 (123) 456-78-90" type="text" class="form-control phonenumb" name="phonenumb" value="" required /> </div> 		<div data-tip="Выберите удобную дату"> 			<input id="checkDate" name="checkDate" class="form-control" type="date" onchange="getdate(event);" required /> </div> 	</div> </div>

<div class="col-md-6 form-group"> <div class="form-group mt-3 mt-md-0"> <div data-tip="Введите номер телефона указанный в договоре"> <input placeholder="+7 (123) 456-78-90" type="text" class="form-control phonenumb" name="phonenumb" value="" required /> </div> <div data-tip="Выберите удобную дату"> <input id="checkDate" name="checkDate" class="form-control" type="date" onchange="getdate(event);" required /> </div> </div> </div>

Имею следующий вид в десктоп браузере (в режиме просмотра мобильного тоже):

Почему не отображается заполнитель и иконка инпута даты в bootstrap на мобильных устройствах?

Но если открываю в браузере сафари или гугл хром на телефоне (физическом устройстве), то вижу следующее:

Почему не отображается заполнитель и иконка инпута даты в bootstrap на мобильных устройствах?

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

Дополнительно:

Заполнитель в каком формате передаёте в инпут?

  • Sergey В., да я его и не передаю в явном виде, я устанавливаю минимальную дату и максимальную, в том формате, который javascript отдаёт из Date() и привожу его к ISOString удаляя ненужное из строки. Вот так:
    $(document).ready(function() {     var date = new Date();     // var today = date.toISOString().slice(0, 10);     var minInput = new Date(date.setDate(date.getDate() + 3)).toISOString().slice(0, 10);     var maxInput = new Date(date.setDate(date.getDate() + 7)).toISOString().slice(0, 10);      $("#checkDate").attr('min', minInput);     $("#checkDate").attr('max', maxInput);      $('.phonenumb').inputmask("+7 (999) 999-99-99");  });

    $(document).ready(function() { var date = new Date(); // var today = date.toISOString().slice(0, 10); var minInput = new Date(date.setDate(date.getDate() + 3)).toISOString().slice(0, 10); var maxInput = new Date(date.setDate(date.getDate() + 7)).toISOString().slice(0, 10); $("#checkDate").attr('min', minInput); $("#checkDate").attr('max', maxInput); $('.phonenumb').inputmask("+7 (999) 999-99-99"); });

    В таком варианте для меня является удобным то, что автоматически подставляется текущий месяц и год, который нельзя поменять, а вот день остаётся не заполненным

  • В общем я решил задачу тем, что просто устанавливаю значение по умолчанию, при таком раскладе инпут всегда заполнен датой, что позволяет человеку понять что это инпут даты (даже с учётом того, что иконка не во всех браузерах отображается).

    Вот пример js, в котором я вычисляю минимальную и максимальную даты от текущей и по умолчанию выставляю минимальную доступную дату:

    var minInput = getMinDateForInput();     $("#checkDate").val(minInput);

    var minInput = getMinDateForInput(); $("#checkDate").val(minInput);

    В моём случае минимальная дата может быть только завтра, но если "завтра" - суббота или воскресенье, то минимальная доступная дата - грядущий понедельник:

    function getMinDateForInput() {     var currentDate = new Date();     currentDate.setDate(currentDate.getDate() + 1);      while (currentDate.getDay() === 0 || currentDate.getDay() === 6) {         currentDate.setDate(currentDate.getDate() + 1); // Если да, увеличиваем дату на один день     }     var year = date.getFullYear();     var month = ('0' + (date.getMonth() + 1)).slice(-2);     var day = ('0' + date.getDate()).slice(-2);      var formattedDate = year + '-' + month + '-' + day;     return formattedDate; }

    function getMinDateForInput() { var currentDate = new Date(); currentDate.setDate(currentDate.getDate() + 1); while (currentDate.getDay() === 0 || currentDate.getDay() === 6) { currentDate.setDate(currentDate.getDate() + 1); // Если да, увеличиваем дату на один день } var year = date.getFullYear(); var month = ('0' + (date.getMonth() + 1)).slice(-2); var day = ('0' + date.getDate()).slice(-2); var formattedDate = year + '-' + month + '-' + day; return formattedDate; }

    Ответы:

    у меня была похожая проблема
    placeholder не отображается при type="date"
    и я нашел более ли менее подходящее мне решение возможно оно и тебе поможет)

    <input class="number_pasport" type="text" onfocus="(this.type='date')" onblur="(this.type='text')" id="date_of_issue" placeholder="Дата выдачи">

    <input class="number_pasport" type="text" onfocus="(this.type='date')" onblur="(this.type='text')" id="date_of_issue" placeholder="Дата выдачи">

    • В такой реализации не очень удобно то, что нужно кликнуть сначала на инпут, который является текстом, после клика он изменится на инпут дату и нужно будет ещё раз на него жать, чтобы открыть датапикер. В общем как по мне не очень, для себя можно сделать, а для продакшена - не прокатит.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Мария Код Ответ

    Проблема с отображением заполнителя и иконки инпута даты в bootstrap на мобильных устройствах может возникать из-за различных причин. Возможно, это связано с тем, что некоторые мобильные браузеры не поддерживают определенные CSS-свойства, которые используются в стилях bootstrap.

    Для решения проблемы с отображением заполнителя и иконки инпута даты на мобильных устройствах вам следует выполнить следующие шаги:

    1. Убедитесь, что вы используете последнюю версию bootstrap. Иногда проблемы с отображением элементов могут возникать из-за устаревших версий библиотек.

    2. Проверьте, что вы правильно подключили все необходимые файлы bootstrap (CSS и JS) к вашему проекту. Отсутствие какого-либо файла или неправильное подключение может вызвать проблемы с отображением.

    3. Проверьте, что ваш HTML-код правильно использует классы bootstrap для инпутов с датой. Например, для добавления иконки к инпуту даты используйте классы "input-group" и "input-group-append".

    Пример кода на PHP:

    <div class="input-group">
     
      <div class="input-group-append">
        <span class="input-group-text"><i class="fa fa-calendar"></i></span>
      </div>
    </div>

    <div class="input-group"> <div class="input-group-append"> <span class="input-group-text"><i class="fa fa-calendar"></i></span> </div> </div>

    4. Если все вышеперечисленные шаги не помогли решить проблему, попробуйте добавить специфические стили для мобильных устройств через медиа-запросы в ваш CSS-файл. Например, вы можете изменить размер иконки или шрифт текста для лучшей видимости на мобильных устройствах.

    Надеюсь, эти рекомендации помогут вам решить проблему с отображением заполнителя и иконки инпута даты в bootstrap на мобильных устройствах. Если проблема сохраняется, не стесняйтесь задать дополнительные вопросы для получения дальнейшей помощи.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно