Advertisement
palsushobhan

wcfm-booking-avialability-date-format-validity-check

Apr 19th, 2025
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.14 KB | None | 0 0
  1. add_action('after_wcfm_products_manage', function() {
  2.     ?>
  3.     <script>
  4.         jQuery(function($) {
  5.             $( document.body ).on( 'wcfm_form_validate', function(event, elem) {
  6.                 let $elem = $(elem);
  7.                 let $datePickers = $elem.find('input.wcfm_datepicker.hasDatepicker');
  8.                 if($datePickers.length) {
  9.                     $datePickers.each( function() {
  10.                         let $datePicker = $(this);
  11.                         if($datePicker.attr('placeholder')!=='YYYY-MM-DD' || !$datePicker.val()) return;
  12.                         if(!isValidDate($datePicker.val())) {
  13.                             if( $wcfm_is_valid_form )
  14.                             $('#' + $elem.attr('id') + ' .wcfm-message').html( '<span class="wcicon-status-cancelled"></span>Invalid date. Use YYYY-MM-DD format.').addClass('wcfm-error').slideDown();
  15.                             else
  16.                             $('#' + $elem.attr('id') + ' .wcfm-message').append( '<br /><span class="wcicon-status-cancelled"></span>Invalid date. Use YYYY-MM-DD format.' );
  17.                        
  18.                             $wcfm_is_valid_form = false;
  19.                             $datePicker.removeClass('wcfm_validation_success').addClass('wcfm_validation_failed');
  20.                             return;
  21.                         }
  22.                     });
  23.                 }
  24.             });
  25.             function isValidDate(dateString) {
  26.                 const dateFormatRegex = /^\d{4}-\d{2}-\d{2}$/;
  27.                 if (!dateFormatRegex.test(dateString)) {
  28.                     return false;
  29.                 }
  30.  
  31.                 const parts = dateString.split("-");
  32.                 const year = parseInt(parts[0], 10);
  33.                 const month = parseInt(parts[1], 10);
  34.                 const day = parseInt(parts[2], 10);
  35.  
  36.                 const date = new Date(year, month - 1, day);
  37.  
  38.                 return !isNaN(date.getTime()) &&
  39.                     date.getFullYear() === year &&
  40.                     date.getMonth() === month - 1 &&
  41.                     date.getDate() === day;
  42.             }
  43.         });
  44.     </script>
  45.     <?php
  46. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement