Nano Hash - криптовалюты, майнинг, программирование

Отображение флажка внутри поля ввода

Я пытаюсь отобразить средство выбора даты с возможностью отключения поля ввода. Когда выбран вариант Never Expire, как на изображении ниже, поле ввода datepicker будет отключено.

введите здесь описание изображения

Вот что я сделал до сих пор:

<style>
.chkbox {
    padding-right: 10px;
    font-weight: bold;
    position: absolute;
}
</style>
<input type="text" placeholder="&#xf073; Select Date" id="datepicker" autocomplete="new-datepicker" name="expireDate" style="font-family:Arial, FontAwesome" />

Вот мои вопросы:

  1. Как добавить флажок Never Expire справа от поля ввода Date Picker?
  2. Как я могу отключить поле ввода даты, когда установлен флажок Never Expire?
  3. Как мне отправить только один вариант либо datepicker, либо значение флажка?

Спасибо в ожидании :)


  • Выбранный вариант означает значение флажка или выбранную дату, или и то, и другое? 22.02.2021
  • Поместите padding-right на вход и переместите флажок с абсолютным позиционированием. 22.02.2021
  • @DavidLiang Выбрана средняя опция флажка, потому что выбранная опция выбора даты будет отключена 22.02.2021

Ответы:


1

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

<form>
    <div class="form-group">
        <div class="input-group date-select-with-expire-option">
            <div class="input-group-prepend">
                <span class="input-group-text">
                    <i class="far fa-calendar-alt"></i>
                </span>
            </div>
            <input type="text" class="form-control date-input" name="SelectedDate"
                   placeholder="Select date" />
            <div class="input-group-append">
                <div class="input-group-text">              
                    <div class="custom-control custom-checkbox">
                        <input type="checkbox" 
                            class="custom-control-input expire-option"
                            name="DateNeverExpires" id="never-expired">
                        <label class="custom-control-label" for="never-expired">
                            Never expires
                        </label>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>

По умолчанию это будет выглядеть следующим образом:

введите здесь описание изображения

Затем вы можете поиграть с CSS/SASS, чтобы он выглядел так, как вы хотите:

.input-group.date-select-with-expire-option {
    .input-group-text {
        background-color: transparent;
    }
    
    // Just in case there are multiple .form-control elements
    .form-control {
        // Set the first .form-control's left border color to transparent
        &:first-of-type {
            border-left-color: transparent;
        }
        
        // Set the last .form-control's right border-color to transparent
        &:last-of-type {
            border-right-color: transparent;
        }
    }
    
    .input-group-prepend {
        .input-group-text {
            border-right-color: transparent;
        }
    }
    
    .input-group-append {
        .input-group-text {
            border-left-color: transparent;
        }
    }
}

Это будет выглядеть так:

введите здесь описание изображения

Чтобы отключить поле ввода выбора даты, когда установлен флажок «Никогда не истекать», вы можете написать некоторый jQuery:

$(function() {
    $('.date-select-with-expire-option .expire-option[type=checkbox]').change(function() {
        console.info($(this));
        let $dateInput = $('.date-select-with-expire-option').find('.date-input');
        $dateInput.prop('disabled', $(this).is(':checked'));
    });
});

Когда флажок установлен, это будет выглядеть так

введите здесь описание изображения


Я бы отправил их оба, и вы можете запустить логику в своем приложении, чтобы определить, какие значения использовать. Просто убедитесь, что у них установлен атрибут name во входных элементах.


Демонстрация: https://jsfiddle.net/davidliang2008/thbfnd2s/38/


Обновление: установите средство выбора диапазона дат

Я просто привожу еще один пример использования средства выбора диапазона дат в качестве реализации средства выбора даты для ввода даты. .

Вы можете легко выбрать ввод даты, сославшись на его класс или идентификатор, если хотите:

function() {
    $('.date-select-with-expire-option .date-input').daterangepicker({
        singleDatePicker: true
    });

    ...
}

введите здесь описание изображения

Демонстрация: https://jsfiddle.net/davidliang2008/thbfnd2s/42/


Обновление: установите средство выбора даты jQuery

Похоже, что у автора проблемы с использованием средства выбора даты jQuery, поэтому позвольте мне показать, что ему нужно. Вам нужно установить

Тогда вам нужно изменить только фрагмент кода, который создает экземпляр объекта выбора даты:

$(function() {
    $('.date-select-with-expire-option .date-input').datepicker();
    
    ...
});

введите здесь описание изображения

введите здесь описание изображения

Демонстрация: https://jsfiddle.net/davidliang2008/thbfnd2s/43/

22.02.2021
  • @freedomn-m: что ты имел в виду? Какая часть моего решения использует абсолютное позиционирование?? Я хотел бы учиться. 22.02.2021
  • Откройте скрипку, установите флажок, проверьте элемент, выберите тип ввода = флажок, css: .custom-control-input { position: absolute } - это не важно, но пользовательский интерфейс начальной загрузки выполняет много относительных (и некоторых незначительных абсолютных) позиционирование. 23.02.2021
  • @freedomn-m: О, этот ввод пользовательского элемента управления. Это прямо из фреймворка Bootstrap, и я не написал ни одной строки кода. Я просто сказал, что мне не нравится использовать абсолютное позиционирование, если мне нужно написать свой собственный код (в данном случае, перемещая флажок в поле ввода даты). Я уверен, что фреймворк использует абсолютное позиционирование во многих местах, но если мне придется разрабатывать собственные коды, я бы по возможности избегал его использования. Не сказать, что это плохо. Это просто мое предпочтение. :) 23.02.2021
  • Правильно, имеет больше смысла. Полностью согласен - используйте то, что кто-то полностью протестировал за вас. 23.02.2021
  • @ Дэвид Лян Спасибо за ваш ответ. Есть одна небольшая проблема: id=datepicker. Я имею в виду, что теперь он не показывает календарь даты 23.02.2021
  • @Murteza: я не реализовал календарь дат. Я думал, что ваша проблема заключалась в том, чтобы поставить флажок вместе с вводом даты. Ваш OP также не показал, какую реализацию средства выбора даты вы используете. Их много: средство выбора даты jQuery, календарь Bootstrap, средство выбора диапазона дат и т. д. 23.02.2021
  • @DavidLiang Я использую средство выбора даты jQuery, и если вы видите, у меня есть id="datepicker" в моем коде. 23.02.2021
  • @Murteza: я обновил свой ответ и показал вам, как это сделать с помощью средства выбора диапазона дат, но процесс действительно такой же, как и с другими средствами выбора: вы можете добавить идентификатор обратно к вводу даты или вы можете сослаться на него через класс, как и я. Пожалуйста, прочитайте мои коды и поймите, как это работает. Я не пытаюсь полностью построить решение, точно такое же, как ваше, но надеюсь, что вы понимаете лежащие в его основе концепции. 23.02.2021
  • @DavidLiang Я благодарен тебе за то, что ты уделил мне свое драгоценное время. Я ценю!! Я использовал во всем своем проекте средство выбора даты jQuery, и на данном этапе очень сложно изменить эту утилиту на Date Range Picer. Пожалуйста, помогите мне с выбором даты jQuery. Я старался изо всех сил, глубоко изучив ваш код, но так и не смог его отключить. Пожалуйста, проверьте это и исправьте меня, чтобы отключить ввод даты: jsfiddle.net/Raakh5/cm2L15ob/10 23.02.2021
  • @Murteza: пожалуйста, смотрите мои обновления. Вы просто заменяете код, который создает экземпляр средства выбора диапазона дат, на средство выбора даты jQuery. Я не уверен, почему у вас проблемы. Если вам нужно использовать #datepicker в качестве идентификатора ввода даты, вам нужно изменить код let $dateInput = $('.disable-date-input').find('.date-input');, чтобы вместо этого использовать этот идентификатор, что-то вроде let $dateInput = $('#datepicker');. 23.02.2021

  • 2

    Вы можете поместить оба входа (флажок и средство выбора даты) в div (как оболочку), после чего укажите абсолютную позицию для флажка. вы можете выровнять его с синтаксисом поля.

    22.02.2021
  • Я поместил флажок и средство выбора даты в одну оболочку div, но они все равно отображаются отдельно. Я использовал этот css для выравнивания .chkbox { padding-right: 10px; font-weight: bold; position: absolute} 22.02.2021
  • Релевантно: Ваш ответ находится в другом замке: когда ответ не является ответом? - пожалуйста, покажите, как это сделать в своем ответе. 22.02.2021
  • @Ali Safaei Я обновил свой вопрос. не могли бы вы привести пример jsFidle 22.02.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..