diff --git a/packages/components/common/validator.ts b/packages/components/common/validator.ts index 6b203cd8ae..190e18730d 100644 --- a/packages/components/common/validator.ts +++ b/packages/components/common/validator.ts @@ -66,8 +66,9 @@ export function isDate( const delimiter = opts.delimiters.find((d) => opts.format.includes(d)); if (!delimiter) return false; + const dateDelimiter = opts.strictMode ? delimiter : opts.delimiters.find((d) => (input as string).includes(d)); const formatParts = opts.format.split(delimiter); - const dateParts = input.split(delimiter); + const dateParts = input.split(dateDelimiter); if (formatParts.length !== dateParts.length) return false; let year = ''; diff --git a/packages/components/form-item/__test__/form-model.test.js b/packages/components/form-item/__test__/form-model.test.js new file mode 100644 index 0000000000..3949d4322a --- /dev/null +++ b/packages/components/form-item/__test__/form-model.test.js @@ -0,0 +1,8 @@ +import { validateOneRule } from '../form-model'; + +describe('form-model', () => { + it(': date rule accepts any allowed delimiter', async () => { + expect((await validateOneRule('2024/01/31', { date: true })).result).toBe(true); + expect((await validateOneRule('2024-01-31', { date: true })).result).toBe(true); + }); +}); diff --git a/packages/uniapp-components/common/validator.ts b/packages/uniapp-components/common/validator.ts index 790559a097..5a209366fe 100644 --- a/packages/uniapp-components/common/validator.ts +++ b/packages/uniapp-components/common/validator.ts @@ -84,8 +84,9 @@ export function isDate(input: string | Date, options?: IsDateOptions): boolean { const delimiter = opts.delimiters.find((d) => opts.format.includes(d)); if (!delimiter) return false; + const dateDelimiter = opts.strictMode ? delimiter : opts.delimiters.find((d) => (input as string).includes(d)); const formatParts = opts.format.split(delimiter); - const dateParts = input.split(delimiter); + const dateParts = input.split(dateDelimiter); if (formatParts.length !== dateParts.length) return false; let year = '';