JavaScript Cơ Bản / Buổi 11 · Event và Form
schedule45 phút signal_cellular_altCơ bản
0%
auto_storiesBuổi 11 — JavaScript Cơ Bản

Event và Form trong JavaScript

Từ một trang web tĩnh đến một trang web biết lắng nghe, phản hồi và xử lý dữ liệu người dùng — đây là bước nền quan trọng để học DOM, mini project và các form thực tế.

schedule45 phút signal_cellular_altCơ bản codeJavaScript DOM workspace_premiumJavaScript tương tác · Buổi 11/15
01
article
Giới thiệu bài

Tại sao cần học Event và Form?

Bài học này tập trung vào cách JavaScript bắt thao tác của người dùng và phản hồi lại thông qua eventform. Nhờ phần kiến thức này, trang web không còn chỉ hiển thị nội dung tĩnh mà có thể tương tác trực tiếp với người dùng.

Nếu chưa nắm được nội dung này, học viên sẽ khó học tiếp các phần như kiểm tra form đăng ký/đăng nhập, thêm dữ liệu vào danh sách, xử lý nút bấm hay các mini project quản lý thông tin đơn giản.

infoÝ nghĩa bài học
Đây là bước đầu tiên để JavaScript giao tiếp với người dùng trên trang web: bấm nút, nhập dữ liệu, gửi form và hiển thị kết quả theo thời gian thực.
02
track_changes
Mục tiêu bài học

Sau bài học, bạn sẽ làm được

  • check
    Hiểu event là gì và form hoạt động ra sao
    Nhận ra vì sao muốn web tương tác được thì phải biết lắng nghe hành động của người dùng.
  • check
    Nhận diện các sự kiện thường gặp
    Phân biệt được click, input, change, submit và biết khi nào nên dùng từng loại.
  • check
    Gắn sự kiện và lấy dữ liệu đúng cách
    Sử dụng addEventListener(), đọc dữ liệu bằng .value, chặn reload bằng preventDefault().
  • check
    Viết được các bài tương tác cơ bản
    Làm được nút tăng giảm số, nhập tên để hiện lời chào, form đăng ký đơn giản và kiểm tra dữ liệu rỗng.
  • check
    Tránh các lỗi rất hay gặp
    Không nhầm .value với .innerText, không quên preventDefault(), và biết dùng trim() khi kiểm tra rỗng.
03
history_edu
Kiến thức cần nhớ

Những nền tảng cần có trước khi vào bài

calculate
JavaScript không chỉ để tính toán
Ngoài phép toán và biến, JavaScript còn dùng để xử lý hành động người dùng như bấm nút, nhập chữ, gửi form, chọn giá trị.
web_asset
HTML phải có phần tử tương tác
Các phần tử như button, input, form, p, div, span là nơi JavaScript gắn xử lý.
ads_click
Muốn tương tác phải chọn đúng phần tử
Trước khi bắt sự kiện hay lấy dữ liệu, cần truy cập đúng phần tử bằng getElementById() hoặc querySelector().
tips_and_updates
Ghi nhớ nhanh
JavaScript chỉ xử lý tốt khi ta chọn đúng phần tử, gắn đúng sự kiệnlấy đúng dữ liệu.
04
menu_book
Nội dung chính

Event, .value, submit và kiểm tra dữ liệu — Toàn cảnh

Event là hành động xảy ra trên trang web: người dùng bấm nút, nhập dữ liệu, gửi form, rê chuột hoặc thay đổi giá trị. Khi sự kiện xảy ra, JavaScript có thể lắng nghe và phản hồi lại.

JavaScript — addEventListener()
const btn = document.getElementById("btnGui");

btn.addEventListener("click", function () {
  console.log("Bạn vừa bấm nút");
});
lightbulbSự kiện thường gặp
click để bắt thao tác bấm, input để bắt khi đang gõ, change khi giá trị đã đổi xong, và submit khi form được gửi.

Với các ô nhập, dữ liệu người dùng nhập vào được lấy bằng .value. Còn nếu muốn thay đổi nội dung đang hiển thị trên thẻ p, div, span thì dùng .innerText.

JavaScript — .value và .innerText
const oNhap = document.getElementById("hoTen");
const ketQua = document.getElementById("ketQua");

const duLieu = oNhap.value;
ketQua.innerText = "Xin chào " + duLieu;

Với form, sự kiện quan trọng nhất là submit. Khi bấm nút có type="submit", trình duyệt thường tải lại trang. Vì vậy ta thường dùng event.preventDefault() để chặn hành vi mặc định trước khi kiểm tra dữ liệu.

JavaScript — submit + preventDefault + trim
const form = document.getElementById("formThongTin");
const ketQua = document.getElementById("ketQua");

form.addEventListener("submit", function (event) {
  event.preventDefault();

  const hoTen = document.getElementById("hoTen").value;

  if (hoTen.trim() === "") {
    ketQua.innerText = "Bạn chưa nhập họ tên";
  } else {
    ketQua.innerText = "Xin chào " + hoTen;
  }
});
ruleQuy trình tư duy
Chọn phần tử → gắn sự kiện → lấy dữ liệu bằng .value → dùng trim() để kiểm tra rỗng → báo lỗi hoặc hiển thị kết quả.
05
lightbulb
Ví dụ minh hoạ

Ba ví dụ bám sát bài học

lightbulbVí dụ 1 — Bắt sự kiện clickEX-01
Mục tiêu: bấm nút để hiện thông báo. Đây là bài cơ bản nhất để làm quen với addEventListener() và sự kiện click.
JavaScript — click
const nut = document.getElementById("btnChao");

nut.addEventListener("click", function () {
  alert("Xin chào");
});
lightbulbVí dụ 2 — Nhập tên và hiện ra màn hìnhEX-02
Mục tiêu: lấy dữ liệu người dùng nhập bằng .value, sau đó hiển thị bằng .innerText.
JavaScript — input value
const nut = document.getElementById("btnHien");
const ketQua = document.getElementById("ketQua");

nut.addEventListener("click", function () {
  const ten = document.getElementById("hoTen").value;
  ketQua.innerText = "Xin chào " + ten;
});
lightbulbVí dụ 3 — Form dễ sai nếu quên kiểm tra dữ liệuEX-03
Điểm cần nhớ: nếu quên preventDefault() thì form sẽ tải lại trang; nếu quên trim() thì người dùng nhập toàn khoảng trắng vẫn có thể qua kiểm tra.
JavaScript — submit an toàn
const formThongTin = document.getElementById("formThongTin");
const ketQua = document.getElementById("ketQua");

formThongTin.addEventListener("submit", function (event) {
  event.preventDefault();

  const hoTen = document.getElementById("hoTen").value;

  if (hoTen.trim() === "") {
    ketQua.innerText = "Bạn chưa nhập họ tên";
  } else {
    ketQua.innerText = "Xin chào " + hoTen;
  }
});
06
warning
Lỗi thường gặp

Ba lỗi học viên rất hay vấp phải

errorNhầm giữa .value và .innerText
Biểu hiện: lấy dữ liệu từ input nhưng kết quả sai hoặc rỗng vì dùng .innerText thay cho .value.
arrow_forwardÔ nhập dùng .value; phần hiển thị dùng .innerText.
errorQuên preventDefault() khi xử lý form
Biểu hiện: vừa bấm gửi là trang tải lại, kết quả hiển thị bị mất và khó kiểm tra dữ liệu bằng JavaScript.
arrow_forwardTrong hàm bắt submit, luôn nhớ viết event.preventDefault() trước phần xử lý chính.
errorKiểm tra rỗng nhưng không dùng trim()
Biểu hiện: người dùng nhập toàn dấu cách vẫn được xem là có dữ liệu vì chỉ so sánh trực tiếp chuỗi gốc.
arrow_forwardDùng if (ten.trim() === "") để loại bỏ khoảng trắng ở đầu và cuối trước khi kiểm tra.
07
rule
Quy trình làm bài

6 bước xử lý bài Event và Form

01
Đọc yêu cầu thật rõ
Đề yêu cầu bắt sự kiện gì, lấy dữ liệu ở đâu, kết quả cần hiện ở đâu — đọc xong phải trả lời được ba câu hỏi này.
02
Xác định phần tử cần dùng
Chỉ rõ input nào, button nào, form nào và nơi nào dùng để hiển thị kết quả.
03
Gắn đúng sự kiện
Bấm nút thì dùng click; gửi form thì dùng submit; muốn bắt khi đang gõ thì dùng input.
04
Viết phần lõi xử lý
Lấy dữ liệu bằng .value, kiểm tra bằng trim(), sau đó xử lý logic chính và cập nhật giao diện.
05
Kiểm tra nhiều tình huống
Thử nhập đúng dữ liệu, để trống dữ liệu, nhập có khoảng trắng và bấm nhiều lần để xem kết quả có ổn định không.
06
Soát lỗi cuối cùng
Tự hỏi lại: có quên preventDefault() không, có nhầm .value với .innerText không, thông báo cho người dùng đã đủ rõ ràng chưa?
08
task_alt
Tóm tắt cuối bài

Những điểm cốt lõi cần nhớ

bolt
EventLà hành động xảy ra trên trang web khi người dùng tương tác: bấm, nhập, gửi form, thay đổi giá trị.
link
addEventListener()Dùng để gắn xử lý cho một phần tử khi có sự kiện xảy ra.
edit_note
.valueDùng để lấy dữ liệu từ ô nhập như input, textarea, select.
article
.innerTextDùng để lấy hoặc thay đổi nội dung đang hiển thị trên phần tử.
send
submit + preventDefault()Khi xử lý form, thường phải chặn reload trước rồi mới kiểm tra và hiển thị kết quả.
format_clear
trim()Khi kiểm tra dữ liệu rỗng, gần như luôn nên dùng trim() để loại bỏ khoảng trắng thừa.
schoolBước tiếp theo
Khi nắm chắc Event và Form, bạn đã có nền tảng để làm các bài tương tác như form đăng ký, form đăng nhập, to-do list và các mini project web cơ bản.