JavaScript - 表單驗證:初學者指南

你好,有抱負的程式設計師們!今天,我們將要深入探索JavaScript表單驗證的精彩世界。作為一個教導程式設計多年的老師,我可以告訴你,這是你要學習的最實用和最重要的技能之一。那麼,讓我們開始吧!

JavaScript - Validations

表單驗證是什麼?

在我們跳進代碼之前,讓我們先了解表單驗證是什麼,以及它為什麼重要。想像一下你在線上訂購披薩時填寫表單。你可能不會想意外訂購了1000個披薩而不是1個,對吧?這就是表單驗證的作用所在——它檢查用戶輸入的數據,以確保其正確並且格式正確。

基本表單驗證

1. 檢查字段是否為空

讓我們從最基本的驗證開始——檢查字段是否為空。這裡有一個簡單的例子:

function validateForm() {
let x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
}

在這段代碼中:

  • 我們從名為 "myForm" 的表單中獲取名為 "fname" 的字段的值。
  • 如果該值為空(空字符串),我們會顯示一個警告並返回 false,這樣可以防止表單被提交。

2. 驗證數字輸入

現在,讓我們確保一個字段只包含數字:

function validateNumber() {
let x = document.getElementById("myNumber").value;
if (isNaN(x) || x < 1 || x > 100) {
alert("Input not valid");
return false;
}
}

這裡發生了什麼:

  • 我們獲取 ID 為 "myNumber" 的輸入字段的值。
  • 我們使用 isNaN() 函數來檢查它是否不是數字。
  • 我們還檢查數字是否在 1 到 100 之間。
  • 如果這些條件中的任何一個為真,我們會顯示一個警告並返回 false。

數據格式驗證

1. 電子郵件驗證

最常見的驗證之一是檢查電子郵件地址是否具有正確的格式。這是我們如何做到這一點的方法:

function validateEmail() {
let email = document.getElementById("myEmail").value;
let regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!regex.test(email)) {
alert("Please enter a valid email address");
return false;
}
}

這可能看起來有點嚇人,但讓我們分解一下:

  • 我們使用正則表達式(regex)來檢查電子郵件格式。
  • 正則表達式檢查以下內容:
  • 一些不是空格或 @ 的字符 ([^\s@]+)
  • 然後是一個 @ 符號
  • 然後是更多不是空格或 @ 的字符
  • 然後是一個點
  • 然後是最後更多不是空格或 @ 的字符

2. 日期驗證

讓我們驗證一個日期,以確保其格式為 MM/DD/YYYY:

function validateDate() {
let date = document.getElementById("myDate").value;
let regex = /^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/;
if (!regex.test(date)) {
alert("Please enter a valid date in MM/DD/YYYY format");
return false;
}
}

這個正則表達式更複雜,但它檢查以下內容:

  • 它檢查:
  • 一個月(01-12)
  • 然後是一個 /
  • 一個日(01-31)
  • 另一個 /
  • 一個四位數的年

請記住,這檢查的是格式,但它不會檢查日期是否實際有效(例如2月30日)。

組合所有內容

現在我們已經看到了個別的驗證,讓我們將它們組合成一個單一的表單:

<form name="myForm" onsubmit="return validateForm()">
Name: <input type="text" name="fname"><br>
Age: <input type="text" id="myNumber"><br>
Email: <input type="text" id="myEmail"><br>
Date: <input type="text" id="myDate"><br>
<input type="submit" value="Submit">
</form>

<script>
function validateForm() {
if (!validateName() || !validateNumber() || !validateEmail() || !validateDate()) {
return false;
}
return true;
}

function validateName() {
let x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
return true;
}

function validateNumber() {
let x = document.getElementById("myNumber").value;
if (isNaN(x) || x < 1 || x > 100) {
alert("Age must be a number between 1 and 100");
return false;
}
return true;
}

function validateEmail() {
let email = document.getElementById("myEmail").value;
let regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!regex.test(email)) {
alert("Please enter a valid email address");
return false;
}
return true;
}

function validateDate() {
let date = document.getElementById("myDate").value;
let regex = /^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/;
if (!regex.test(date)) {
alert("Please enter a valid date in MM/DD/YYYY format");
return false;
}
return true;
}
</script>

在這個完整的例子中:

  • 我們有一個包含名稱、年齡、電子郵件和日期字段的表單。
  • 表單的 onsubmit 事件調用 validateForm()
  • validateForm() 調用我們所有的個別驗證函數。
  • 如果任何驗證失敗,表單提交將被阻止。

結論

恭喜你!你剛剛學會了JavaScript表單驗證的基本知識。記住,驗證不僅僅是防止錯誤——它是創造更好用戶體驗的關鍵。隨著你繼續你的程式設計旅程,你會找到更多提升你的表單和使其更加用戶友好的方法。

這裡是一個總結我們所涵蓋的驗證方法的表格:

方法 目的 示例
空字段檢查 確保必填字段已填寫 if (x == "")
數字驗證 檢查輸入是否為數字並在範圍內 if (isNaN(x) || x < 1 || x > 100)
電子郵件驗證 驗證電子郵件格式 if (!regex.test(email))
日期格式驗證 檢查日期是否為正確格式 if (!regex.test(date))

繼續練習,不久你將成為表單驗證的專家!記住,每個偉大的程式設計師都是從你現在的位置開始的。快樂編程!

Credits: Image by storyset