Dưới đây là một hướng dẫn cơ bản về các loại input, button và hoạt động của input trong thẻ `form` trong HTML: ### 1. Thẻ `<form>` trong HTML - **Chức năng**: Dùng để tạo một biểu mẫu cho người dùng nhập liệu. Dữ liệu có thể được gửi đến máy chủ để xử lý. - **Thuộc tính quan trọng**: - `action`: Địa chỉ URL nơi dữ liệu sẽ được gửi đến. - `method`: Phương thức gửi dữ liệu (`GET` hoặc `POST`). ### 2. Các Loại Input trong Thẻ `<form>` - **`<input type="text">`**: Dùng để nhập văn bản. - **`<input type="password">`**: Dùng để nhập mật khẩu, ký tự nhập vào sẽ được ẩn. - **`<input type="radio">`**: Radio button, cho phép chọn một trong nhiều lựa chọn. - **`<input type="checkbox">`**: Checkbox, cho phép chọn nhiều lựa chọn. - **`<input type="submit">`**: Nút gửi biểu mẫu. - **`<input type="reset">`**: Nút đặt lại biểu mẫu. - **`<input type="file">`**: Cho phép tải lên tệp. - **`<input type="hidden">`**: Trường ẩn, không hiển thị cho người dùng. - **`<input type="date">`**, **`<input type="time">`**, **`<input type="email">`**, **`<input type="url">`**: Dành cho nhập ngày, giờ, email, và URL. ### 3. Button - **`<button>`**: Thẻ tạo nút bấm. Có thể chứa nội dung phong phú hơn `<input type="button">`. - **Thuộc tính `type`**: - `submit`: Gửi biểu mẫu. - `reset`: Đặt lại biểu mẫu. - `button`: Nút không có chức năng mặc định. ### 4. Hoạt Động của Input - **Gửi Dữ Liệu**: Khi người dùng nhấn nút submit, dữ liệu trong các trường input sẽ được gửi theo phương thức và địa chỉ URL được chỉ định trong thẻ `form`. - **Xử Lý Dữ Liệu**: Máy chủ sẽ xử lý dữ liệu nhận được và thực hiện các tác vụ như lưu trữ, truy vấn, v.v. - **Validation**: Các trường input có thể được kiểm tra tính hợp lệ trước khi gửi (ví dụ: định dạng email, bắt buộc nhập, v.v.). ### 5. Thuộc Tính Bổ Sung - **`placeholder`**: Hiển thị văn bản gợi ý trong trường input. - **`name`**: Tên của trường input, quan trọng khi gửi dữ liệu lên máy chủ. - **`value`**: Giá trị mặc định của trường input. Sự khác biệt cơ bản giữa thẻ `input` trong thẻ `form` và thẻ `input` đặt ở ngoài thẻ `form` trong HTML chủ yếu liên quan đến cách dữ liệu được xử lý và gửi đi: ### 1. Thẻ `input` Trong Thẻ `form` - **Gửi Dữ Liệu**: Khi đặt trong thẻ `form`, các giá trị nhập vào thẻ `input` có thể được tự động gửi đến máy chủ khi người dùng nhấn nút submit. Các giá trị này được gửi theo thuộc tính `action` và `method` của thẻ `form`. - **Tên Tham Số**: Giá trị của thẻ `input` được gửi đi cùng với tên (`name`) của nó như là một phần của dữ liệu biểu mẫu. - **Tương Tác với Các Phần Tử Khác Trong Biểu Mẫu**: `input` có thể tương tác với các phần tử khác trong cùng một `form`, ví dụ như validation, điều khiển trạng thái của nút submit, v.v. ### 2. Thẻ `input` Ở Ngoài Thẻ `form` - **Không Tự Động Gửi Dữ Liệu**: Khi thẻ `input` không nằm trong thẻ `form`, giá trị của nó không được tự động gửi đi khi nhấn submit. Bạn cần sử dụng JavaScript để xử lý và gửi dữ liệu. - **Độc Lập với Biểu Mẫu**: Các `input` độc lập này thường được sử dụng cho các mục đích không cần gửi dữ liệu đến máy chủ, như tìm kiếm trên trang, nhập liệu chỉ để hiển thị trên client-side, v.v. - **Không Liên Kết với Dữ Liệu Biểu Mẫu**: Chúng không bị ảnh hưởng bởi các hoạt động như submit hoặc reset của thẻ `form`. ### Tóm Lược - **Thẻ `input` trong `form`**: Dùng cho việc thu thập và gửi dữ liệu đến máy chủ, có thể tương tác với các phần tử khác trong cùng một biểu mẫu. - **Thẻ `input` ngoài `form`**: Được sử dụng cho các tác vụ không liên quan trực tiếp đến việc gửi dữ liệu, cần JavaScript để xử lý dữ liệu nhập vào. <hr> ### Lấy giá trị `value` của bằng Javascript Để lấy ra giá trị của thẻ input trong HTML sử dụng Query Selector trong JavaScript, bạn có thể làm theo các bước sau: ### 1. Sử dụng `document.querySelector()` - **Cách sử dụng**: `document.querySelector(selector)`, nơi `selector` là chuỗi CSS selector để xác định phần tử bạn muốn chọn. - **Ví dụ**: Nếu bạn có một input với `id` là `myInput`, bạn có thể sử dụng `document.querySelector('#myInput')` để chọn phần tử đó. ### 2. Lấy Giá Trị của Input - Sau khi đã chọn được phần tử input, bạn có thể sử dụng thuộc tính `.value` để lấy giá trị của nó. - **Ví dụ**: `var inputValue = document.querySelector('#myInput').value;` ### 3. Ví Dụ Cụ Thể Giả sử bạn có thẻ HTML sau: ```html <input type="text" id="myInput" value="Hello World"> ``` Để lấy giá trị của input này bằng JavaScript, bạn làm như sau: ```javascript // Chọn phần tử input var inputElement = document.querySelector('#myInput'); // Lấy giá trị var value = inputElement.value; // Hiển thị giá trị console.log(value); // Kết quả sẽ là "Hello World" ``` ### 4. Lưu Ý - **Chọn Selector Phù Hợp**: Nếu có nhiều input, hãy đảm bảo selector của bạn đủ cụ thể để chọn đúng phần tử bạn muốn. - **Xử lý Trường Hợp Không Tìm Thấy Phần Tử**: Nếu `document.querySelector()` không tìm thấy phần tử nào, nó sẽ trả về `null`. Hãy kiểm tra điều này để tránh lỗi. Hàm trong JavaScript là một khối mã được thiết kế để thực hiện một nhiệm vụ cụ thể. Hàm có thể được gọi tại nhiều nơi trong mã của bạn, giúp tái sử dụng mã và làm cho chương trình của bạn gọn gàng hơn và dễ bảo trì hơn. ### Tính Chất Cơ Bản của Hàm trong JavaScript: 1. **Định Nghĩa Hàm**: Hàm được định nghĩa bằng từ khóa `function`, theo sau là tên hàm, danh sách các tham số trong dấu ngoặc đơn và khối mã thực thi trong dấu ngoặc nhọn. 2. **Tham Số (Parameters) và Đối Số (Arguments)**: Hàm có thể nhận một số tham số, được định nghĩa khi tạo hàm, và được truyền vào hàm dưới dạng đối số khi hàm được gọi. 3. **Phạm Vi (Scope)**: Biến được khai báo trong hàm chỉ có phạm vi trong hàm đó. Chúng không thể truy cập từ bên ngoài hàm. 4. **Giá Trị Trả Về (Return Value)**: Hàm có thể trả về giá trị. Nếu không có giá trị trả về được chỉ định, hàm sẽ trả về `undefined`. 5. **Loại Hàm**: Có nhiều loại hàm, bao gồm hàm thông thường, hàm mũi tên (arrow function), hàm ẩn danh (anonymous function), và hàm tự gọi (immediately invoked function expression - IIFE). ### Ví Dụ ```javascript function add(a, b) { return a + b; } var sum = add(5, 3); // sum sẽ có giá trị là 8 ``` Trong ví dụ trên, `add` là một hàm nhận hai tham số `a` và `b`, và trả về tổng của chúng. ### Ý Nghĩa Hàm là một phần cốt lõi của lập trình JavaScript. Chúng cho phép chia nhỏ chương trình thành các phần nhỏ hơn, giúp mã dễ quản lý, dễ đọc và dễ sửa lỗi. Hàm cũng là cơ sở cho các khái niệm lập trình quan trọng khác trong JavaScript, như closures và callbacks. Sự kiện trong JavaScript là những tương tác hoặc thay đổi trạng thái mà xảy ra trong trình duyệt, mà script có thể được thiết lập để phản ứng lại với chúng. Có nhiều loại sự kiện khác nhau, từ việc người dùng tương tác với trang web (như nhấn nút, di chuyển chuột, nhập văn bản) đến những thay đổi trong trạng thái của trang (như tải xong trang, cập nhật kích thước trình duyệt). ### Tính Chất Cơ Bản của Sự Kiện trong JavaScript 1. **Tương Tác Người Dùng**: Các sự kiện như `click`, `mouseover`, `keyup`, `change` xảy ra do tương tác của người dùng. 2. **Thay Đổi Trạng Thái Trang**: Sự kiện như `load`, `resize`, `unload` phản ánh sự thay đổi trạng thái của trang hoặc cửa sổ trình duyệt. 3. **Asynchronous**: Sự kiện xảy ra độc lập với luồng chính của mã JavaScript, cho phép mã JavaScript chạy không đồng bộ. 4. **Bắt và Xử Lý Sự Kiện**: JavaScript cho phép "bắt" sự kiện bằng cách sử dụng các hàm listener (người lắng nghe) hoặc handlers (xử lý viên) để thực hiện các hành động cụ thể khi sự kiện đó xảy ra. 5. **Điều Khiển Hành Vi Mặc Định**: Trong nhiều trường hợp, JavaScript có thể ngăn chặn hành vi mặc định của một sự kiện (ví dụ: ngăn trình duyệt chuyển trang khi nhấn vào một liên kết). ### Ví Dụ ```javascript // HTML: <button id="myButton">Click Me</button> // JavaScript document.getElementById('myButton').addEventListener('click', function() { alert('Button clicked!'); }); ``` Trong ví dụ trên, một sự kiện `click` được thêm vào nút, và khi nút được nhấn, một hộp thoại alert sẽ xuất hiện. ### Ý Nghĩa Sự kiện trong JavaScript rất quan trọng trong việc xây dựng trải nghiệm người dùng tương tác và đáp ứng trên trang web. Chúng cho phép lập trình viên tạo ra các ứng dụng web linh hoạt và phức tạp. <hr> Sự kiện `click` trong HTML là một trong những sự kiện cơ bản nhất, cho phép bạn phản ứng với hành động nhấn chuột của người dùng. Dưới đây là cách khởi tạo hàm xử lý sự kiện `click` thông qua JavaScript và cách lấy dữ liệu từ một thẻ `input` trong sự kiện này. ### 1. Khởi Tạo Hàm Click Bằng Query Selector Sử dụng `document.querySelector()` để chọn phần tử và sau đó gán hàm xử lý sự kiện `click`. ```javascript // Giả sử có một nút với id là "myButton" var button = document.querySelector('#myButton'); button.addEventListener('click', function() { // Mã xử lý khi nút được nhấn }); ``` ### 2. Khởi Tạo Hàm Click Trực Tiếp Trên Element HTML Bạn có thể gán hàm xử lý sự kiện `click` trực tiếp trong HTML. ```html <!-- HTML --> <button onclick="myFunction()">Click Me</button> <!-- JavaScript --> function myFunction() { // Mã xử lý khi nút được nhấn } ``` ### 3. Tham Số Truyền Vào của Hàm Click Trong hàm xử lý sự kiện `click`, bạn có thể truy cập đối tượng sự kiện (thường được gọi là `event`) chứa thông tin về sự kiện. ```javascript button.addEventListener('click', function(event) { // Sử dụng 'event' để lấy thông tin về sự kiện }); ``` ### 4. Lấy Dữ Liệu của Input Trong Sự Kiện Click Để lấy dữ liệu từ một thẻ `input` khi sự kiện `click` xảy ra, bạn cần truy cập phần tử `input` và sử dụng thuộc tính `.value`. ```javascript // Giả sử có một input với id là "myInput" var input = document.querySelector('#myInput'); button.addEventListener('click', function() { var inputValue = input.value; // Sử dụng giá trị inputValue }); ``` ### Tóm Lược - **Khởi Tạo Sự Kiện Click**: Bạn có thể sử dụng `addEventListener` với Query Selector hoặc gán hàm trực tiếp trong thuộc tính `onclick` của HTML. - **Xử Lý Sự Kiện**: Trong hàm xử lý, bạn có thể sử dụng đối tượng sự kiện để lấy thông tin về sự kiện. - **Lấy Dữ Liệu Input**: Trong hàm xử lý sự kiện `click`, truy cập và lấy dữ liệu từ thẻ `input` sử dụng `.value`. Sự kiện `click` là một phần quan trọng trong việc tạo ra giao diện người dùng tương tác trên web.