From 8682e02f6b0ff47a0030376faa253a31c974824f Mon Sep 17 00:00:00 2001 From: cbasguti Date: Tue, 2 May 2023 15:12:19 +0200 Subject: [PATCH] Fix #18330 - Solved Uncaught TypeError when no-datetime field is modified Signed-off-by: cbasguti --- js/src/functions.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/js/src/functions.js b/js/src/functions.js index cf51947dd3..066f3bcd15 100644 --- a/js/src/functions.js +++ b/js/src/functions.js @@ -4400,21 +4400,24 @@ Functions.ignorePhpErrors = function (clearPrevErrors) { * @param $inputField */ Functions.toggleDatepickerIfInvalid = function ($td, $inputField) { - // Regex allowed by the Datetimepicker UI - var dtexpDate = new RegExp(['^([0-9]{4})', - '-(((01|03|05|07|08|10|12)-((0[1-9])|([1-2][0-9])|(3[0-1])))|((02|04|06|09|11)', - '-((0[1-9])|([1-2][0-9])|30)))$'].join('')); - var dtexpTime = new RegExp(['^(([0-1][0-9])|(2[0-3]))', - ':((0[0-9])|([1-5][0-9]))', - ':((0[0-9])|([1-5][0-9]))(.[0-9]{1,6}){0,1}$'].join('')); + // If the Datetimepicker UI is not present, return + if ($inputField.hasClass('hasDatepicker')) { + // Regex allowed by the Datetimepicker UI + var dtexpDate = new RegExp(['^([0-9]{4})', + '-(((01|03|05|07|08|10|12)-((0[1-9])|([1-2][0-9])|(3[0-1])))|((02|04|06|09|11)', + '-((0[1-9])|([1-2][0-9])|30)))$'].join('')); + var dtexpTime = new RegExp(['^(([0-1][0-9])|(2[0-3]))', + ':((0[0-9])|([1-5][0-9]))', + ':((0[0-9])|([1-5][0-9]))(.[0-9]{1,6}){0,1}$'].join('')); - // If key-ed in Time or Date values are unsupported by the UI, close it - if ($td.attr('data-type') === 'date' && ! dtexpDate.test($inputField.val())) { - $inputField.datepicker('hide'); - } else if ($td.attr('data-type') === 'time' && ! dtexpTime.test($inputField.val())) { - $inputField.datepicker('hide'); - } else { - $inputField.datepicker('show'); + // If key-ed in Time or Date values are unsupported by the UI, close it + if ($td.attr('data-type') === 'date' && ! dtexpDate.test($inputField.val())) { + $inputField.datepicker('hide'); + } else if ($td.attr('data-type') === 'time' && ! dtexpTime.test($inputField.val())) { + $inputField.datepicker('hide'); + } else { + $inputField.datepicker('show'); + } } };