Web Cơ Bản

Cách bắt sự kiện (Event) trong JavaScript

1) Sự kiện là gì !?

- Thông thường, sự kiện là những hành động của người dùng khi tương tác lên phần tử HTML.

- Ví dụ:

  • Khi người dùng click chuột vào phần tử, đó là một sự kiện.
  • => Ví dụ, bạn hãy thử
  • Khi người dùng gõ văn bản vào textfield, đó là một sự kiện.
  • => Ví dụ, bạn hãy thử
  • Khi người dùng di chuyển con trỏ vào phần tử, đó là một sự kiện.
  • => Ví dụ, bạn hãy thử
    Di chuyển con trỏ vào đây
  • ....

2) Các sự kiện trong JavaScript

- Trong JavaScript, mỗi sự kiện sẽ tương ứng với một cái tên.

- Dưới đây là danh sách một vài sự kiện phổ biến mà ta thường dùng trong JavaScript.

Tên sự kiện Mô tả
onclick Sự kiện xảy ra khi người dùng click chuột vào phần tử
ondblclick Sự kiện xảy ra khi người dùng click kép chuột vào phần tử
onmouseenter Sự kiện xảy ra khi người dùng di chuyển con trỏ vào phần tử
onmouseleave Sự kiện xảy ra khi người dùng di chuyển con trỏ ra khỏi phần tử.
onkeydown Sự kiện xảy ra khi người dùng đang nhấn một phím
onkeyup Sự kiện xảy ra khi người dùng nhả phím ra
oncopy Sự kiện xảy ra khi người dùng sao chép nội dung của phần tử
oncut Sự kiện xảy ra khi người dùng cắt nội dung của phần tử
onpaste Sự kiện xảy ra khi người dùng dán nội dung vào phần tử
onchange Sự kiện xảy ra khi người dùng thay đổi giá trị của phần tử

Bạn sẽ được tìm hiểu đầy đủ tất cả các sự kiện trong bài hướng dẫn nâng cao về sự kiện

3) Bắt sự kiện là gì !?

- "Bắt sự kiện" là khi một sự kiện nào đó xảy ra thì ta muốn JavaScript phản ứng lại với sự kiện đó bằng việc thực thi một đoạn mã xác định.

- Ví dụ, tôi muốn khi người dùng thì câu lệnh alert('Xin chào JavaScript') sẽ được thực thi.

- Ví dụ, tôi muốn:

- Khi người dùng di chuyển con trỏ vào phần tử này thì màu nền của phần tử này sẽ chuyển sang màu hồng (tức là câu lệnh this.style.backgroundColor='pink' được thực thi)

- Khi người dùng di chuyển con trỏ ra khỏi phần tử này thì màu nền của phần tử này sẽ chuyển sang màu trắng (tức là câu lệnh this.style.backgroundColor='white' được thực thi)

4) Cách bắt sự kiện trong JavaScript

- Trước khi bắt sự kiện thì ta cần phải xác định rõ ba thành phần:

  • (1) Phần tử dùng để xảy ra sự kiện.
  • (2) Sự kiện sẽ xảy ra.
  • (3) Đoạn mã sẽ được thực thi khi sự kiện xảy ra.

- Dưới đây là cú pháp dùng để bắt sự kiện:

<Tên-phần-tử Tên-sự-kiện="đoạn mã sẽ được thực thi khi sự kiện xảy ra">
Ví dụ:

Khi người dùng click kép chuột vào nút "Xem kết quả" thì đoạn mã:

var a = 100;
var b = 50;
var result = (a + b)*2;
alert('Kết quả của biểu thức là: ' + result)
sẽ được thực thi.


<!DOCTYPE html>
<html>
<body>
    <button ondblclick="var a = 100;var b = 50;var result = (a + b)*2;alert('Kết quả của biểu thức là: ' + result)">Xem kết quả</button>
</body>
</html>
Xem ví dụ
Ví dụ:

Khi người dùng click chuột vào nút "Xin chào" thì hàm hello() sẽ được thực thi


<!DOCTYPE html>
<html>
<body>
    <button onclick="hello()">Xin chào</button>
    <p id="demo"></p>
    <script>
        function hello(){
            var name = "Nguyễn Thành Nhân";
            var year = 1993;
            var str = "Tôi tên " + name + " sinh năm " + year;
            document.getElementById("demo").innerHTML = str;
        }
    </script>
</body>
</html>
Xem ví dụ

- Lưu ý: Với cùng một phần tử, ta có thể bắt cho nó nhiều sự kiện.

Ví dụ:

Phần tử <div> có id là demo bên dưới được bắt hai sự kiện:

  • Khi người dùng di chuyển con trỏ vào nó thì sự kiện onmouseenter xảy ra và câu lệnh this.style.backgroundColor='yellow' sẽ được thực thi.
  • Khi người dùng di chuyển con trỏ vào nó thì sự kiện onmouseleave xảy ra và câu lệnh this.style.backgroundColor='gray' sẽ được thực thi.

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        #demo{
            width:300px;
            height:200px;
            background-color:gray;
        }
    </style>
</head>
<body>
    <div id="demo" onmouseenter="this.style.backgroundColor='yellow'" onmouseleave="this.style.backgroundColor='gray'"></div>
</body>
</html>
Xem ví dụ

- Lưu ý:

  • Nếu đoạn mã được viết bên trong bên trong cặp dấu nháy kép thì trong đoạn mã tuyệt đối không được chứa ký tự là dấu nháy kép.
  • Nếu đoạn mã được viết bên trong bên trong cặp dấu nháy đơn thì trong đoạn mã tuyệt đối không được chứa ký tự là dấu nháy đơn.
Ví dụ:

<button onclick="alert("Hello")">Xin chào</button> <!-- SAI -->
<button onclick='alert('Hello')'>Xin chào</button> <!-- SAI -->
<button onclick="alert('Hello')">Xin chào</button> <!-- ĐÚNG -->
<button onclick='alert("Hello")'>Xin chào</button> <!-- ĐÚNG -->

5) Một số ví dụ khác

Ví dụ:

<!DOCTYPE html>
<html>
<body>
    <input type="text" onkeydown="this.style.backgroundColor='pink'" onkeyup="this.style.backgroundColor='yellow'" placeholder="gõ ký tự vào đây">
</body>
</html>
Xem ví dụ
Ví dụ:

<!DOCTYPE html>
<html>
<body>
    <textarea cols="50" rows="15" oncopy="alert('Bạn vừa sao chép nội dung của phần tử này')" oncut="alert('Bạn vừa cắt nội dung của phần tử này')" onpaste="alert('Bạn vừa dán nội dung vào phần tử này')">Tài liệu hướng dẫn học lập trình web</textarea>
</body>
</html>
Xem ví dụ
Ví dụ:

<!DOCTYPE html>
<html>
<body>
    <select onchange="alert('Bạn vừa thay đổi giá trị của phần tử này')">
        <option value="html">HTML</option>
        <option value="css">CSS</option>
        <option value="javascript">JavaScript</option>
        <option value="mysql">MySQL</option>
        <option value="php">PHP</option>
    </select>
</body>
</html>
Xem ví dụ