From 52c1d28d7ead243e3c8ac8ca8ba6c23f472fff59 Mon Sep 17 00:00:00 2001 From: BhavinRaichura Date: Mon, 24 Jul 2023 13:58:28 +0530 Subject: [PATCH] Contact form submission error fixed --- pages/api/submitForm.js | 11 ++-- pages/index.js | 112 ++++++++++++++++++++++------------------ 2 files changed, 67 insertions(+), 56 deletions(-) diff --git a/pages/api/submitForm.js b/pages/api/submitForm.js index 683fb927..bc5866c8 100644 --- a/pages/api/submitForm.js +++ b/pages/api/submitForm.js @@ -1,10 +1,8 @@ import db from "db/db"; -import nextConnect from "next-connect"; import Form from "db/models/Form"; -const handler = nextConnect(); - -handler.post(async (req, res) => { +const POST = async (req, res) => { + //console.log(req.body) try { await db.connect(); const data = req.body; @@ -23,6 +21,7 @@ handler.post(async (req, res) => { } catch (error) { res.status(500).json({ success: false, error }); } -}); +}; + -export default handler; +export default POST \ No newline at end of file diff --git a/pages/index.js b/pages/index.js index ad0e86df..1a975e0b 100644 --- a/pages/index.js +++ b/pages/index.js @@ -37,13 +37,6 @@ export default function Home() { const [form, setForm] = useState(emptyForm); const [loading, setLoading] = useState(false); - const [firstName, setFirstName] = useState(''); - const [lastName, setLastName] = useState(''); - const [mail, setMail] = useState(''); - const [phone, setPhone] = useState(''); - const [address, setAddrees] = useState(''); - const [message, setMessage] = useState(''); - const [error, seterror] = useState(''); const [success, setsuccess] = useState(''); function validEmail(email) { @@ -53,51 +46,68 @@ export default function Home() { else return false; } + + const isFormValid = (formData) => { + // Simple validation logic for each field + if ( + formData.first_name.trim() === '' || + formData.last_name.trim() === '' || + formData.email.trim() === '' || + formData.phone.trim() === '' || + formData.address.trim() === '' || + formData.message.trim() === '' + ) { + return false; + } + + // Validate contactNumber is 10 digits + if (!/^\d{10}$/.test(formData.phone)) { + return false; + } + + // Validate email format + if ( !validEmail(formData.email)) { + return false; + } + + return true; + }; + const handleSubmit = async (e) => { e.preventDefault(); - if (firstName === '') { - seterror('firstnameerr'); - } else if (lastName === '') { - seterror('lastnameerr'); - } else if (mail === '') { - seterror('emailerr'); - } else if (!validEmail(mail)) { - seterror('validerr'); - } else if (phone === '') { - seterror('phoneerr'); - } else if (phone.length !== 10) { - seterror('numbererr'); - } else if (address === '') { - seterror('addresserr'); - } else if (message === '') { - seterror('messageerr'); - } else { - setLoading(true); - try { - const res = await axios.post('/api/submitForm', form); - const data = await res.data; - console.log(data); - dispatch({ - type: { - task: 'setAlert', - alert: { type: 'noti', message: 'Form Submitted Successfully' } - } - }); - } catch (error) { - console.log(error); - } finally { - setLoading(false); - setFirstName(''); - setLastName(''); - setPhone(''); - setMail(''); - setPhone(''); - setAddrees(''); - setMessage(''); - seterror(''); - setsuccess('Contact form sent successfully!!'); - } + if(!isFormValid(form)){ + dispatch({ + type: { + task: 'setAlert', + alert: { type: 'noti', message: 'Invaid form' } + } + }); + return; + } + + setLoading(true); + try { + const res = await axios.post('/api/submitForm', form); + const data = await res.data; + console.log(data); + dispatch({ + type: { + task: 'setAlert', + alert: { type: 'noti', message: 'Form Submitted Successfully' } + } + }); setForm(emptyForm); + } catch (error) { + console.log(error); + dispatch({ + type: { + task: 'setAlert', + alert: { type: 'noti', message: 'Something went wrong..!' } + } + }); + } finally { + setLoading(false); + setsuccess('Contact form sent successfully!!'); } }; @@ -259,12 +269,13 @@ export default function Home() {