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

Отключить определенные даты и включить определенные дни недели в средстве выбора даты jQuery

Я пытаюсь отключить определенные даты и включить только определенные дни недели в средстве выбора даты пользовательского интерфейса jQuery.

Это внутри темы Wordpress/Woocommerce, и я пытаюсь решить некоторые ошибки, но я здесь часами, пытаясь найти решение, и даже пробовал каждое решение, которое я нашел на StackOverflow и других веб-сайтах, но ничего не работает.

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

Код (с некоторым жестко запрограммированным образцом):

$(document).ready(function(){
    var available_days = ["3"]; //it comes from the database
    var today = new Date();
    var tour_start_date = new Date( 1525132800000 ); //it comes from the database
    var tour_end_date = new Date( 1546214400000 ); //it comes from the database
    var available_first_date = tour_end_date;
    var lang = 'en_UK';

    lang = lang.replace( '_', '-' );

    today.setHours(0, 0, 0, 0);
    tour_start_date.setHours(0, 0, 0, 0);
    tour_end_date.setHours(0, 0, 0, 0);

    if ( today > tour_start_date ) {
        tour_start_date = today;
    }

    function DisableDays(date) {
        var day = date.getDay();

        if ( available_days.length == 0 ) {
            if ( available_first_date >= date && date >= tour_start_date) {
                available_first_date = date;
            }
            return true;
        }

        if ( $.inArray( day.toString(), available_days ) >= 0 ) {
            if ( available_first_date >= date && date >= tour_start_date) {
                available_first_date = date;
            }
            return true;
        } else {
            return false;
        }
    }
    if ( $('input.date-pick').length ) {
        if ( lang.substring( 0, 2 ) != 'fa' ) {
            $('input.date-pick').datepicker({
                startDate: tour_start_date,
                endDate: tour_end_date,
                beforeShowDay: DisableDays,
                language: lang
            });
            $('input[name="date"]').datepicker( 'setDate', available_first_date );
        } else {
            var date_format = $('input.date-pick').data('date-format');
            $('input.date-pick').persianDatepicker({
                observer: true,
                format: date_format.toUpperCase(),
            });
        }
    }
});

  • Итак, проблема в том, как отключить дополнительные дни после того, как они выбраны где-то на странице? Или, если нет, откуда bought day? 29.05.2018
  • Он будет исходить из базы данных. Я хотел бы, по крайней мере, заставить его работать с жестким кодом для целей тестирования. 30.05.2018
  • Какие-нибудь ошибки отображаются в консоли? 30.05.2018

Ответы:


1

Просмотрите: http://api.jqueryui.com/datepicker/#option-beforeShowDay

Функция, которая принимает дату в качестве параметра и должна возвращать массив с:

[0]: true/false, указывающий, можно ли выбрать эту дату.

[1]: имя класса CSS для добавления в ячейку даты или "" для представления по умолчанию.

[2]: необязательная всплывающая подсказка для этой даты

Проблема в вашем коде заключалась в том, что вы возвращали true или false только тогда, когда требовался массив. Например:

$(function() {
  var available_days = ["3", "5"]; //it comes from the database
  var today = new Date();
  var tour_start_date = new Date(1525132800000); //it comes from the database
  var tour_end_date = new Date(1546214400000); //it comes from the database
  var available_first_date = tour_end_date;
  var lang = 'en_UK';

  lang = lang.replace('_', '-');

  today.setHours(0, 0, 0, 0);
  tour_start_date.setHours(0, 0, 0, 0);
  tour_end_date.setHours(0, 0, 0, 0);

  if (today > tour_start_date) {
    tour_start_date = today;
  }

  function DisableDays(date) {
    var day = date.getDay();
    var found = false;

    if (available_days.length == 0) {
      if (available_first_date >= date && date >= tour_start_date) {
        available_first_date = date;
      }
      found = true;
    }
    if ($.inArray(day.toString(), available_days) >= 0) {
    console.log(day + " in Array");
      if (available_first_date >= date && date >= tour_start_date) {
        available_first_date = date;
      }
      found = true;
    }
    console.log(day, found);
    return [found, "tour-date", "Tour Date"];
  }
  if ($('input.date-pick').length) {
    if (lang.substring(0, 2) != 'fa') {
      $('input.date-pick').datepicker({
        startDate: tour_start_date,
        endDate: tour_end_date,
        beforeShowDay: DisableDays,
        language: lang
      });
      $('input[name="date"]').datepicker('setDate', available_first_date);
    } else {
      var date_format = $('input.date-pick').data('date-format');
      $('input.date-pick').persianDatepicker({
        observer: true,
        format: date_format.toUpperCase(),
      });
    }
  }
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

Date: <input type="text" class="date-pick" name="date" />

30.05.2018
Новые материалы

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

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

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

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

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

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

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