Sự kiện (Event) trong Javascript

Sự kiện (Event) trong Javascript

Đáng lẽ bài này mình sẽ tiếp tục giới  thiệu với các bạn DOM nhưng nhận thấy việc học mà không thực hành thì rất nhàm chán và khó nhớ bài, vì vậy trong bài này mình sẽ giới thiệu về sự kiện trong javascript. Sau bài này chúng ta có thể làm được nhiều ví dụ hơn và tôi sẽ không mất nhiều thời gian giải thích nữa.

1. Sự kiện trong javascript là gì?

Về định nghĩa dưới dạng nghe hiểu thì sự kiện là một hành động nào đó tác động lên đối tượng HTML mà ta có thể bắt được sự kiện này và thực hiện những hành động nào đó.

Mỗi sự kiện chúng ta có thể có nhiều hành động. Ví dụ bạn có một sự kiện là tết âm lịch thì bạn sẽ có những hành động trong sự kiện đó là mua đồ mới, dọn dẹp nhà cửa, mua bao lì xì, ..

Xét về mặt thực tế thì ta có dụ thế này: Giả sử bạn xây dựng một form đăng ký tài khoản và bạn muốn bắt sự kiện khi người dùng CLICK vào button đăng ký thì hiện những hành động như validate dữ liệu, thông báo nếu người dùng nhập nội dung không đúng, .. Như vậy bạn cần nhớ rằng mỗi sự kiện chúng ta có thể thực hiện nhiều hành động khác nhau và bao nhiêu hành động thì phụ thuộc vào từng chức năng cụ thể.

2. Các sự kiện (Events) trong javascrpt

Sau khái niệm sự kiện là gì thì chắc hẳn bạn đang nôn nóng muốn biết sự kiện trong javascript là gì rồi nhỉ? Ok ta  bắt đầu ngay luôn.

Có rất nhiều sự kiện và mỗi đối tượng HTML thì lại có những sự kiện khác nhau nên mình chỉ liệt kê được những sự kiện thông dụng hay sử dụng khi các bạn làm việc với javascript để lập trình phía client.

Bảng các sự kiện thông dụng trong javascript.

STTEvent NameDescription
1onclickXảy ra khi click vào thẻ HTML
2ondbclickXảy ra khi double click vào thẻ HTML
3onchangeXảy ra khi giá trị (value) của thẻ HTML đổi. Thường dùng trong các đối thẻ form input
4onmouseoverXảy ra khi con trỏ chuột bắt đầu đi vào thẻ HTML
5onmouseoutXảy ra khi con trỏ chuột bắt đầu rời khỏi thẻ HTML
6onmouseenterTương tự như onmouseover
7onmouseleaveTương tự như onmouseout
8onmousemoveXảy ra khi con chuột di chuyển bên trong thẻ HTML
9onkeydownXảy ra khi gõ một phím bất kì vào ô input
10onloadSảy ra khi thẻ HTML bắt đầu chạy, nó giống như trong lập trình hướng đối tượng vậy đó.
11onkeyupXảy ra khi bạn gõ phím nhưng lúc bạn nhã phím ra sẽ được kích hoạt
12onkeypressXảy ra khi bạn nhấn môt phím vào ô input
14onblurXảy ra khi con trỏ chuột rời khỏi ô input
15oncopyXảy ra khi bạn copy nội dung của thẻ
16oncutXảy ra khi bạn cắt nội dung của thẻ
17onpasteXảy ra khi bạn dán nội dung vào thẻ

Ok bây giờ ta sẽ làm một số ví dụ để các bạn thực hành nhé.

3. Các ví dụ về xử lý sự kiện trong javascript

Ví dụ 1:  Viết chương trình gồm một ô input và một thẻ div dùng để hiển thị nội dung (giá trị của ô input) khi người dùng gõ vào ô input

Vì đề bài yêu cầu khi nhập dữ liệu vào ô input thì hiển thị nội dung bên trong thẻ DIV nên ta có thể sử dụng sự kiện onkeyup. Thứ hai nữa là chúng ta sẽ sử dụng các hàm DOM Element để truy xuất các đối tượng HTML.

Bài giải: XEM DEMO

<html>
  <body>
    <script language="javascript">
      // Hàm show kết quả
      function show_result()
      {
        // Lấy hai thẻ HTML
       	var input = document.getElementById("message");
        var div = document.getElementById("result");
        
        // Gán nội dung ô input vào thẻ div
        div.innerHTML = input.value;
      }
    </script>
    <input type="text" id="message" value="" onkeyup="show_result()"/>
    <div id="result"></div>
  </body>
</html>

Nếu như bài này bạn sử dụng sự kiện onkeypress hoặc onkeydown thì sẽ có kết quả sai, lý do là những sự kiện này xảy ra khi bạn nhấn phím xuống nên nó sẽ lấy giá trị chưa được cập nhật. Còn sự kiện onkeyup xảy ra khi bạn nhả phím ra nên nó sẽ lấy được giá trị mới.

Ví dụ 2: Viết chương trình khi người dùng copy nội dung của website thì thông báo là bạn đã copy thành công

Bài này quá dễ phải không nào. Trong danh sách các sự kiện trên thì có sự kiện oncopy nên ta sẽ sử dụng nó để giải bài này.

Bài giải: XEM DEMO

<html>
  <body>
    <script language="javascript">
      // Hàm show kết quả
      function show_message()
      {
        alert("Bạn đã copy thành công");
      }
    </script>
    <h3>Hãy copy dòng chữ dưới đây:</h3>
    <div oncopy="show_message()">Chào mừng các bạn đến với website truyenmai.com</div>
  </body>
</html>

Ví dụ 3: Viết chương trình tính tổng của hai số nhập vào (tính tự động)

Bài này ta phải tạo 3 ô input và gán sự kiện onkeyup cho 2 ô input đầu tiên, trong sự kiện này sẽ thực hiện tính tổng của hai ô và in kết quả vào ô input thứ 3.

Bài giải: XEM DEMO

<html>
  <body>
    <script language="javascript">
      // Hàm tính kết quả
      function tinh()
      {
        // Lấy 3 ô input
        var a = document.getElementById("a");
        var b = document.getElementById("b");
        var result = document.getElementById("result");
        
        // Tính tổng hai ô đầu tiên
        var tong = parseInt(a.value) + parseInt(b.value);
        
        // Gán giá trị vào ô thứ ba
        // Phải kiểm tra tổng hai số này có bị lỗi hay không
        if (!isNaN(tong)){
          result.value = tong;
        }
      }
    </script>
    a: <input type="text" id="a" value="" onkeyup="tinh()"/>
    b: <input type="text" id="b" value="" onkeyup="tinh()"/>
    Kết quả: <input type="text" id="result" value=""/>
  </body>
</html>

4. Lời kết

Làm việc với Javascript thì không thể quên khái niệm event được nên hãy học chắc bài này nhé các bạn. Mình không thể đưa ra hết ví dụ cho các events được nên bạn hãy tự ra bài tập cho mình và tự giải nhé. Riêng nội dung trong bài này mình có sử dụng kiến thúc bài học cũ nên bạn rất dễ theo dõi, nếu quên thì hãy quay lại bài cũ và đọc sư qua rồi thực hành ví dụ. Chúc bạn học javascript vui vẻ nhé!