From 8610c7d30fc2777aaaaf4b1cfc7e69667de1b2f6 Mon Sep 17 00:00:00 2001 From: Ted Date: Mon, 13 Jan 2025 11:04:13 +0800 Subject: [PATCH] Merge branch 'feat/tli-validate-course-session-input' into develop --- .../MemberContractCreationForm.tsx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/pages/NewMemberContractCreationPage/MemberContractCreationForm.tsx b/src/pages/NewMemberContractCreationPage/MemberContractCreationForm.tsx index d1af61c46..ebebbdc2e 100644 --- a/src/pages/NewMemberContractCreationPage/MemberContractCreationForm.tsx +++ b/src/pages/NewMemberContractCreationPage/MemberContractCreationForm.tsx @@ -486,6 +486,16 @@ const MemberContractCreationForm: React.FC< const [loading, setLoading] = useState(false) const [zeroTaxPrice, setZeroTaxPrice] = useState(0) + const validateNumericSessionInput = (value: number) => { + const regex = /^\d+(\.\d{0,1})?$/ + if (!regex.test(value.toString())) { + console.error('課程堂數只能輸入小數點後一位') + return false + } + + return true + } + const filterProducts = useMemo(() => { return products.filter(product => { if (category.project?.includes('自訂')) { @@ -930,7 +940,15 @@ const MemberContractCreationForm: React.FC< value={totalAmount} step={0.1} onChange={e => { - setTotalAmount(Number(e)) + const numericValue = Number(e) + + if (!validateNumericSessionInput(numericValue)) { + return message.error('課程堂數只能輸入小數點後一位') + } + + const roundedValue = Math.floor(numericValue * 10) / 10 + + setTotalAmount(roundedValue) setCategory({ ...category, name: undefined,