Skip to content
Open
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 107 additions & 25 deletions Form-Controls/index.html
Original file line number Diff line number Diff line change
@@ -1,27 +1,109 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My form exercise</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<header>
<h1>Product Pick</h1>
</header>
<main>
<form>
<!-- write your html here-->
<!--
try writing out the requirements first as comments
this will also help you fill in your PR message later-->
</form>
</main>
<footer>
<!-- change to your name-->
<h2>By HOMEWORK SOLUTION</h2>
</footer>
</body>
</html>

<head>
<meta charset="UTF-8">
<title>T-Shirt Order</title>
</head>

<body>

<form id="tshirtForm">
<label>
Full Name:
<input type="text" id="name" name="name" required>
</label>
<br><br>

<label>
Email:
<input type="email" id="email" name="email" required>
</label>
<br><br>

<label>
T-shirt Colour:
<select id="colour" name="colour" required>
<option value="" disabled selected>Select a colour</option>
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="black">Black</option>
</select>
</label>
<br><br>

<fieldset>
<legend>T-shirt Size</legend>

<label style="display:block; padding:12px 0;">
<input type="radio" name="size" value="XS" required> XS
</label>

<label style="display:block; padding:12px 0;">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed this in my prior review -> Ensure that you don't add CSS to the file, as stated in the instructions.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All done. JavaScript and CSS removed. Lighthouse score 100%. Thank you.

<input type="radio" name="size" value="S"> S
</label>

<label style="display:block; padding:12px 0;">
<input type="radio" name="size" value="M"> M
</label>

<label style="display:block; padding:12px 0;">
<input type="radio" name="size" value="L"> L
</label>

<label style="display:block; padding:12px 0;">
<input type="radio" name="size" value="XL"> XL
</label>

<label style="display:block; padding:12px 0;">
<input type="radio" name="size" value="XXL"> XXL
</label>
</fieldset>

<br>
<button type="submit">Submit</button>
</form>

<script>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you review the exercise instructions? I believe there shouldn't be any javascript in the file.

document.getElementById("tshirtForm").addEventListener("submit", function (event) {
event.preventDefault();

const name = document.getElementById("name").value.trim();
const email = document.getElementById("email").value.trim();
const colour = document.getElementById("colour").value;
const size = document.querySelector('input[name="size"]:checked');

const namePattern = /^[A-Za-z\s]{2,}$/; //I added this to validate names to accept only letter and spaces
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; // Basic email pattern validation

if (!namePattern.test(name)) {
alert("Please enter a valid name (letters and spaces only).");
return;
}

if (!emailPattern.test(email)) {
alert("Please enter a valid email address.");
return;
}

if (colour === "") {
alert("Please select a t-shirt colour.");
return;
}

if (!size) {
alert("Please select a t-shirt size.");
return;
}

alert("Order details are valid!");
});
</script>

<footer>
<p>By Shuheda Begum</p>
</footer>

</body>

</html>