javascript - WordPress插件功能,只有一个可以用吗?

标签 javascript php jquery wordpress

所以我在 WordPress 上有一个带有内置日历的插件。

开发人员已给出有关如何删除选择过去日期以及您选择的具体日期的选项的说明。

http://support.themecatcher.net/quform-wordpress/guides/advanced/date-validation

我已按照说明进行操作,但也许我遗漏了一些内容。因为一次只能运行其中一个功能,但绝不会同时运行这两个功能。

这是代码。任何帮助将不胜感激。谢谢!

<小时/>
function my_prevent_past_dates($valid, $value, $element)
{
 $time = strtotime("{$value['year']}-{$value['month']}-{$value['day']}");

 if ($time < strtotime('today')) {
      $element->addError('Please choose a date in the future');
     $valid = false;
 }

 return $valid;
}

add_filter('iphorm_element_valid_iphorm_1_6', 'my_prevent_past_dates', 10, 3);

function my_datepicker_prevent_past_dates($options, $dpMinYear, $dpMaxYear, $element)
{
  return "{
     minDate: 0,
     maxDate: new Date({$dpMaxYear}, 12 - 1, 31)
    }";
}

add_filter('iphorm_datepicker_options_iphorm_1_6', 'my_datepicker_prevent_past_dates', 10, 4);



function my_get_dates_to_disable()
{
  return array(
        '2015-05-1',
        '2015-05-2',
        '2015-05-3',
        '2015-05-4',
        '2015-05-5',
        '2015-05-6',
  );
}

function my_prevent_specific_dates($valid, $value, $element)
{
  if ($valid) {
       $disabledDates = my_get_dates_to_disable();
       $submittedDate = "{$value['year']}-{$value['month']}-{$value['day']}";

     if (in_array($submittedDate, $disabledDates)) {
            $element->addError('That date is not available');
          $valid = false;
        }
  }

    return $valid;
}

add_filter('iphorm_element_valid_iphorm_1_6', 'my_prevent_specific_dates', 10, 3);

function my_datepicker_prevent_specific_dates($options, $dpMinYear, $dpMaxYear, $element)
{
   return "{
      beforeShowDay: function (date) {
           if (quformDisabledDates) {
                for (var i = 0; i < quformDisabledDates.length; i++) {
                   var parts = quformDisabledDates[i].split('-');
                 if (date.getFullYear() == parts[0] && (date.getMonth()+1) == parts[1] && date.getDate() == parts[2]) {
                      return [false];
                  }
              }
          }
           return [true];
        }
  }";
}

add_filter('iphorm_datepicker_options_iphorm_1_6', 'my_datepicker_prevent_specific_dates', 10, 4);

function my_print_dates_to_disable()
{
   ?>
   <script type="text/javascript">
   var quformDisabledDates = <?php echo json_encode(my_get_dates_to_disable()); ?>;
  </script>
   <?php
}
add_action('wp_head', 'my_print_dates_to_disable');

最佳答案

您可以将 my_prevent_past_dates 与 my_prevent_specific_dates 结合使用,并将 my_datepicker_prevent_past_dates 与 my_datepicker_prevent_specific_dates 结合使用。

function my_get_dates_to_disable()
{
  return array(
        '2015-05-1',
        '2015-05-2',
       '2015-05-3',
       '2015-05-4',
       '2015-05-5',
     '2015-05-6',
  );
}


function my_prevent_bad_dates($valid, $value, $element)
{
 $time = strtotime("{$value['year']}-{$value['month']}-{$value['day']}");

 if ($time < strtotime('today')) {
     $element->addError('Please choose a date in the future');
     $valid = false;
 } else {
     $disabledDates = my_get_dates_to_disable();
     $submittedDate = "{$value['year']}-{$value['month']}-{$value['day']}"; 

     if (in_array($submittedDate, $disabledDates)) {
          $element->addError('That date is not available');
          $valid = false;
     }     
 }

 return $valid;
}

add_filter('iphorm_element_valid_iphorm_1_6', 'my_prevent_bad_dates', 10, 3);


function my_datepicker_prevent_bad_dates($options, $dpMinYear, $dpMaxYear, $element)
{
  return "{
     minDate: 0,
     maxDate: new Date({$dpMaxYear}, 12 - 1, 31),
     beforeShowDay: function (date) {
       if (quformDisabledDates) {
         for (var i = 0; i < quformDisabledDates.length; i++) {
           var parts = quformDisabledDates[i].split('-');
           if (date.getFullYear() == parts[0] && (date.getMonth()+1) == parts[1] && date.getDate() == parts[2]) {
             return [false];
           }
         }
        }
        return [true];
      }     
    }";
}

add_filter('iphorm_datepicker_options_iphorm_1_6', 'my_datepicker_prevent_bad_dates', 10, 4);

function my_print_dates_to_disable()
{
   ?>
   <script type="text/javascript">
   var quformDisabledDates = <?php echo json_encode(my_get_dates_to_disable()); ?>;
  </script>
   <?php
}
add_action('wp_head', 'my_print_dates_to_disable');

关于javascript - WordPress插件功能,只有一个可以用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922671/

相关文章:

php - 键入时存储的表单输入

jquery - 更改单个div的高度(Flexbox)

javascript - 应该每秒重复一次的函数立即发生

javascript - 从两个链接打开 ant design popover

javascript - 如何将 React useState 钩子(Hook)解构到命名空间中?

php - Codeigniter 更改查询

JavaScript 计时器不停止

javascript - 在相同的 tr jQuery 中获取 td 的值

c# - Newtonsoft JSON.NET 与 Json Web 服务的兼容性

jquery - 悬停在对象上时获取对象的 "original"(非悬停)背景颜色