Logo InterData
  • Trang chủ
  • Blog
    • Máy chủ (Server)
    • Máy chủ ảo (VPS)
    • Cloud Server
    • Web Hosting
    • Website
    • Trí tuệ nhân tạo (AI)
    • Lập trình
  • Dịch vụ
    • Thuê chỗ đặt máy chủ
    • Thuê Cloud Server
    • Thuê Hosting
    • Thuê máy chủ
    • Thuê VPS
  • Sự kiện
  • Khuyến Mãi
  • Trang chủ
  • Blog
    • Máy chủ (Server)
    • Máy chủ ảo (VPS)
    • Cloud Server
    • Web Hosting
    • Website
    • Trí tuệ nhân tạo (AI)
    • Lập trình
  • Dịch vụ
    • Thuê chỗ đặt máy chủ
    • Thuê Cloud Server
    • Thuê Hosting
    • Thuê máy chủ
    • Thuê VPS
  • Sự kiện
  • Khuyến Mãi
Trang Chủ Lập trình

Hàm .val() trong jQuery là gì? Cách Sử Dụng & Ví Dụ

Trương Trường Thịnh Được viết bởi Trương Trường Thịnh
A A

NỘI DUNG

Toggle
  • Hàm .val() trong jQuery là gì?
  • Cú pháp .val() cơ bản
    • Lấy giá trị (Getter)
    • Gán giá trị (Setter)
  • Ví dụ .val() với các thẻ form
    • Với input text & textarea
    • Với dropdown (select)
    • Với radio button
    • Với checkbox
  • Phân biệt .val(), .text() và .html()
  • Các lỗi thường gặp với .val()
    • Trả về undefined hoặc rỗng
    • Không hoạt động với div, p, span

Việc xử lý dữ liệu từ form là tác vụ nền tảng trong phát triển web. Nắm vững hàm .val() trong jQuery giúp bạn tương tác hiệu quả với mọi thông tin người dùng nhập vào, từ đó xây dựng các tính năng động một cách dễ dàng. Bài viết này sẽ cung cấp một hướng dẫn toàn diện, từ cú pháp cơ bản đến các ví dụ thực tế với nhiều loại thẻ form, so sánh với các hàm liên quan và chỉ ra những lỗi thường gặp.

Hàm .val() trong jQuery là gì?

Hàm .val() là một phương thức trong thư viện jQuery được thiết kế đặc biệt để lấy (get) giá trị hiện tại hoặc thiết lập (set) một giá trị mới cho các phần tử của form. Các phần tử này bao gồm <input>, <select>, và <textarea>. Đây là công cụ chính yếu khi bạn cần xử lý dữ liệu do người dùng nhập liệu.

Ví dụ, khi một người dùng điền tên vào một ô input, bạn sẽ dùng .val() để lấy chuỗi ký tự đó. Tương tự, khi họ chọn một tùy chọn từ danh sách thả xuống, .val() sẽ giúp bạn biết chính xác họ đã chọn giá trị nào. Việc hiểu rõ chức năng này là bước đầu tiên để làm chủ tương tác form trong jQuery.

Hàm .val() trong jQuery

Cú pháp .val() cơ bản

Hàm .val() có hai cách sử dụng chính, tương ứng với hai hành động cơ bản: lấy giá trị và gán giá trị. Cú pháp của chúng rất đơn giản và dễ nhớ, giúp bạn nhanh chóng áp dụng vào dự án của mình.

Lấy giá trị (Getter)

Để lấy giá trị của một phần tử, bạn chỉ cần gọi hàm .val() mà không cần truyền tham số. Cú pháp này sẽ trả về giá trị hiện tại của phần tử form đầu tiên trong bộ chọn (selector).

Cú pháp: $(selector).val()

Ví dụ: Giả sử bạn có một ô input để người dùng nhập tên.

<input type="text" id="hoTen" value="An Nguyễn">

Để lấy chuỗi “An Nguyễn”, bạn sử dụng đoạn mã jQuery sau:

let tenNguoiDung = $('#hoTen').val();
console.log(tenNguoiDung); // Kết quả: "An Nguyễn"

Gán giá trị (Setter)

Để gán một giá trị mới cho phần tử, bạn truyền giá trị đó vào làm tham số cho hàm .val(). Phương thức này sẽ cập nhật giá trị cho tất cả các phần tử khớp với bộ chọn.

Cú pháp: $(selector).val('gia_tri_moi')

Ví dụ: Để thay đổi giá trị của ô input trên thành một tên khác.

<input type="text" id="hoTen" value="An Nguyễn">

Bạn sử dụng đoạn mã jQuery để gán giá trị mới:

$('#hoTen').val('Trần Văn Bình');
// Bây giờ, giá trị trong ô input đã được cập nhật

Ví dụ .val() với các thẻ form

Lý thuyết là nền tảng, nhưng ví dụ thực tế mới thực sự giúp bạn hiểu sâu vấn đề. Phần này sẽ minh họa cách .val() hoạt động với từng loại phần tử form phổ biến, cung cấp các đoạn code bạn có thể áp dụng ngay.

Hàm .val() trong jQuery

Với input text & textarea

Đối với các thẻ <input type="text">, <input type="password">, <input type="email"> và <textarea>, hàm .val() hoạt động theo cách trực quan nhất. Chúng lấy hoặc gán nội dung dạng chuỗi (string) mà người dùng có thể thấy và chỉnh sửa.

HTML:

<!-- Input Text -->
<p>Tên đăng nhập:</p>
<input type="text" id="username" value="interdata_user">

<!-- Textarea -->
<p>Bình luận của bạn:</p>
<textarea id="comment" rows="4">Đây là bình luận ban đầu.</textarea>

jQuery:

$(document).ready(function(){
  // Lấy giá trị
  let currentUsername = $('#username').val();
  console.log(currentUsername); // Kết quả: "interdata_user"
  
  let currentComment = $('#comment').val();
  console.log(currentComment); // Kết quả: "Đây là bình luận ban đầu."

  // Gán giá trị mới
  $('#username').val('new_user_99');
  $('#comment').val('Nội dung bình luận đã được cập nhật.');
});

Với dropdown (select)

Thẻ <select> có một chút khác biệt. Hàm .val() sẽ làm việc với thuộc tính value của thẻ <option> được chọn. Điều này đặc biệt hữu ích khi giá trị cần xử lý (ví dụ: product_id) khác với nội dung hiển thị cho người dùng (ví dụ: Tên sản phẩm).

HTML (Chọn một):

<p>Chọn thành phố:</p>
<select id="city">
  <option value="HN">Hà Nội</option>
  <option value="HCM" selected>TP. Hồ Chí Minh</option>
  <option value="DN">Đà Nẵng</option>
</select>

jQuery (Chọn một):

// Lấy giá trị của option đang được chọn
let selectedCity = $('#city').val();
console.log(selectedCity); // Kết quả: "HCM"

// Gán giá trị mới (sẽ chọn option có value="DN")
$('#city').val('DN');

HTML (Chọn nhiều): Đối với select cho phép chọn nhiều (multiple), .val() sẽ trả về một mảng chứa giá trị của tất cả các option được chọn.

<p>Chọn các dịch vụ bạn quan tâm:</p>
<select id="services" multiple>
  <option value="vps">Thuê VPS</option>
  <option value="hosting">Hosting</option>
  <option value="domain">Tên miền</option>
</select>

jQuery (Chọn nhiều):

// Gán giá trị (chọn VPS và Tên miền)
$('#services').val(['vps', 'domain']);

// Lấy giá trị (sẽ trả về một mảng)
let selectedServices = $('#services').val();
console.log(selectedServices); // Kết quả: ["vps", "domain"]

Với radio button

Với radio button, người dùng chỉ có thể chọn một tùy chọn trong một nhóm (được xác định bằng thuộc tính name giống nhau). Để lấy giá trị, bạn cần sử dụng bộ chọn :checked để xác định chính xác radio button nào đang được chọn.

HTML:

<p>Phương thức thanh toán:</p>
<input type="radio" name="payment" value="cod" checked> COD
<input type="radio" name="payment" value="momo"> Ví MoMo
<input type="radio" name="payment" value="bank"> Chuyển khoản

jQuery:

// Lấy giá trị của radio được chọn
let paymentMethod = $('input[name="payment"]:checked').val();
console.log(paymentMethod); // Kết quả: "cod"

// Để chọn một radio khác, bạn có thể dùng prop() hoặc attr()
// Nhưng để lấy giá trị thì cú pháp trên là chuẩn nhất.

Với checkbox

Checkbox có thể được chọn đơn lẻ hoặc nhiều cái cùng lúc. Hàm .val() trên một checkbox sẽ luôn trả về giá trị trong thuộc tính value của nó, bất kể nó có được chọn hay không. Do đó, bạn cũng cần kết hợp với bộ chọn :checked để kiểm tra trạng thái.

HTML:

<input type="checkbox" id="agree" value="yes"> Tôi đồng ý với điều khoản.

jQuery (kiểm tra một checkbox):

// Lấy giá trị nếu checkbox được chọn
$('#agree').on('change', function(){
  if ($(this).is(':checked')) {
    let value = $(this).val();
    console.log(value); // Kết quả: "yes" khi được check
  } else {
    console.log('Chưa được check.');
  }
});

Khi làm việc với một nhóm checkbox, bạn cần lặp qua chúng để lấy giá trị của những cái được chọn.

HTML (Nhóm checkbox):

<p>Sở thích:</p>
<input type="checkbox" name="hobby" value="coding"> Lập trình
<input type="checkbox" name="hobby" value="music"> Âm nhạc
<input type="checkbox" name="hobby" value="sport"> Thể thao

jQuery (lấy nhiều giá trị):

let selectedHobbies = [];
$('input[name="hobby"]:checked').each(function(){
  selectedHobbies.push($(this).val());
});
console.log(selectedHobbies); // Kết quả là một mảng, ví dụ: ["coding", "sport"]

Phân biệt .val(), .text() và .html()

Một trong những nhầm lẫn phổ biến nhất của lập trình viên mới là không phân biệt được .val(), .text(), và .html(). Việc sử dụng sai phương thức không chỉ gây lỗi mà còn cho thấy sự thiếu kinh nghiệm. Theo thống kê trên các diễn đàn như Stack Overflow, câu hỏi về sự khác biệt này chiếm một tỷ lệ đáng kể trong các thắc mắc về jQuery.

Bảng dưới đây sẽ làm rõ sự khác biệt:

Phương thức Mục đích chính Áp dụng cho Kết quả trả về
.val() Lấy/Gán giá trị của phần tử form. <input>, <select>, <textarea> Giá trị của thuộc tính value.
.text() Lấy/Gán nội dung văn bản (plain text). Hầu hết các thẻ (div, p, span…). Chỉ trả về text, loại bỏ mọi thẻ HTML bên trong.
.html() Lấy/Gán nội dung HTML. Hầu hết các thẻ (div, p, span…). Trả về chuỗi HTML đầy đủ, bao gồm cả các thẻ con.

Ví dụ minh họa:

<div id="container">
  Đây là <strong>nội dung</strong>.
  <input type="text" id="myInput" value="giá trị input">
</div>
```javascript
let container = $('#container');
let input = $('#myInput');

console.log(input.val());     // "giá trị input"
console.log(container.val()); // undefined (vì div không có value)

console.log(container.text());  // "Đây là nội dung. "
console.log(container.html());  // "Đây là <strong>nội dung</strong>. <input type="text" id="myInput" value="giá trị input">"

Như vậy, quy tắc rất rõ ràng: dùng .val() cho form, dùng .text() hoặc .html() cho các thẻ hiển thị nội dung khác.

Các lỗi thường gặp với .val()

Ngay cả một phương thức đơn giản như .val() cũng có thể gây ra lỗi nếu bạn không cẩn thận. Nhận biết trước các vấn đề phổ biến sẽ giúp bạn tiết kiệm hàng giờ gỡ lỗi.

Hàm .val() trong jQuery

Trả về undefined hoặc rỗng

Đây là lỗi phổ biến nhất. Nếu bạn nhận được undefined, nguyên nhân gần như chắc chắn là do bộ chọn (selector) của bạn bị sai. jQuery không tìm thấy bất kỳ phần tử nào khớp với selector bạn cung cấp. Hãy kiểm tra lại ID, class hoặc tên thẻ trong selector.

Nếu bạn nhận về giá trị rỗng (""), có thể phần tử được tìm thấy nhưng thuộc tính value của nó thực sự đang rỗng. Một nguyên nhân khác, tinh vi hơn, là bạn đang cố gắng lấy giá trị trước khi cây DOM (Document Object Model) được tải xong. Luôn đặt mã jQuery của bạn bên trong khối $(document).ready() để đảm bảo an toàn.

// Cách làm đúng
$(document).ready(function(){
  // Tất cả code jQuery nên ở đây
  let myValue = $('#myElement').val();
});

Không hoạt động với div, p, span

Như đã giải thích ở phần phân biệt, .val() không được thiết kế để làm việc với các thẻ hiển thị nội dung như <div>, <p>, hay <span>. Việc cố gắng gọi .val() trên các phần tử này sẽ trả về undefined.

Nếu bạn muốn lấy hoặc thay đổi nội dung của các thẻ này, hãy sử dụng .text() để làm việc với văn bản thuần hoặc .html() nếu bạn cần thao tác với cả các thẻ HTML bên trong. Lựa chọn đúng phương thức cho đúng ngữ cảnh thể hiện sự chuyên nghiệp và am hiểu công nghệ.

Hi vọng bài viết từ InterData đã cung cấp cho bạn cái nhìn toàn diện và sâu sắc về hàm .val(). Việc áp dụng chính xác các kỹ thuật này sẽ giúp mã nguồn của bạn trở nên sạch sẽ, hiệu quả và dễ bảo trì hơn.

Một hạ tầng máy chủ ổn định là yếu tố cần thiết cho hiệu suất của website và ứng dụng. Tham khảo dịch vụ thuê VPS SSD NVMe giá rẻ – Ổn định – Chất lượng để tìm giải pháp phù hợp cho dự án của bạn.

BÀI VIẾT LIÊN QUAN:

Hàm .html() trong jQuery: Cách dùng, Ví dụ & Lỗi thường gặp

Hàm .Find() trong jQuery: Cách dùng, Ví Dụ & Lỗi Thường Gặp

Hướng Dẫn Bắt Lỗi Form bằng jQuery từ A-Z (Kèm Code Mẫu)

Hướng Dẫn Tạo Hiệu Ứng Xoay Vòng jQuery (Slider/Carousel)

Share187Tweet117
KHUYẾN MÃI NỔI BẬT
Deal mát át nắng hè
DEAL MÁT ÁT NẮNG HÈ – TIẾT KIỆM ĐẾN 80%
BÀI VIẾT MỚI NHẤT
Debug là gì trong lập trình
Debug là gì? Mục đích, công cụ & 5+ Phương pháp gỡ lỗi hiệu quả
Hướng dẫn lập trình Python
Hướng Dẫn Lập Trình Python 2025: Lộ Trình Từ A-Z Cho Người Mới Bắt Đầu
Có những loại ngôn ngữ lập trình nào
Có Những Loại Ngôn Ngữ Lập Trình Nào? 10+ Ngôn Ngữ Phổ Biến
Runtime Error là gì - Nguyên nhân & Cách sửa lỗi thời gian chạy hiệu quả
Runtime Error là gì? Nguyên nhân & Cách sửa lỗi thời gian chạy
Cách học lập trình
Cách Học Lập Trình 2025: Lộ Trình Chi Tiết Cho Người Mới Bắt Đầu
Các phần mềm lập trình
12+ Các Phần Mềm Lập Trình Chuyên Nghiệp & Tốt Nhất Cho Beginner & Dev
Lỗi Logic (Logic Error) Nguyên nhân, Cách Phát Hiện & Sửa Lỗi
Lỗi Logic (Logic Error): Nguyên nhân, Cách Phát Hiện & Sửa Lỗi
Syntax Error Là Gì, Nguyên Nhân & Cách Khắc Phục Lỗi Cú Pháp Hiệu Quả
Syntax Error Là Gì? Nguyên Nhân & Cách Khắc Phục Lỗi Cú Pháp Hiệu Quả
Hàm .val() trong jQuery
Hàm .val() trong jQuery là gì? Cách Sử Dụng & Ví Dụ

logo interdata

VPĐD: 240 Nguyễn Đình Chính, P.11. Q. Phú Nhuận, TP. Hồ Chí Minh
VPGD: 211 Đường số 5, Lakeview City, An Phú, Thủ Đức, TP. Hồ Chí Minh
MST: 0316918910 – Cấp ngày 28/06/2021 – tại Sở KH và ĐT TP. HCM
Mã ĐDKD: 0001
Điện thoại: 1900.636822
Website: Interdata.vn

DỊCH VỤ

Thuê chỗ đặt máy chủ
Thuê Cloud Server
Thuê Hosting
Thuê máy chủ
Thuê VPS

THÔNG TIN

Blog
Giới thiệu
Liên hệ
Khuyến mãi
Sự kiện

CHÍNH SÁCH

Chính sách bảo hành
Chính sách bảo mật
Chính sách xử lý khiếu nại
Cam kết dịch vụ
Điều khoản sử dụng
GDPR
Hình thức thanh toán
Hướng dẫn thanh toán trên VNPAY
Quy định đổi trả và hoàn trả tiền
Quy định sử dụng tên miền