Thuộc tính placeholder của đối tượng HTMLTextAreaElement cho phép **lấy hoặc đặt** văn bản gợi ý (hiển thị mờ) khi textarea **rỗng** và **chưa focus**. Placeholder biến mất khi user bắt đầu gõ hoặc focus. Không thay thế cho <label>.
Cú pháp
// Lấy placeholder var ph = textarea.placeholder; // Đặt placeholder textarea.placeholder = "Gợi ý mới...";
Ví dụ: Đọc và hiển thị placeholder
<!DOCTYPE html>
<html>
<style>
body { color: #000; background: lightseagreen; height: 100vh; }
.btn { background: #db133a; border: none; height: 2rem; border-radius: 2px; width: 40%; display: block; color: #fff; outline: none; cursor: pointer; margin: 1rem auto; }
.show { margin: 1rem 0; font-size: 1.5rem; }
<body>
<h1>Demo: textarea.placeholder</h1>
<textarea placeholder="Hãy nhập phản hồi của bạn tại đây..." rows="6" cols="40"></textarea>
<button onclick="showPlaceholder()" class="btn">Hiện placeholder</button>
<div class="show" id="result"></div>
<script>
function showPlaceholder() {
document.getElementById('result').textContent = "placeholder = '" + document.querySelector("textarea").placeholder + "'";
}
</script>
</body>
</html>
Kết quả:
Nhấn nút → Hiển thị: placeholder = 'Hãy nhập phản hồi của bạn tại đây...'
Lưu ý quan trọng
- Không thay thế <label>: Placeholder biến mất khi gõ → user quên mục đích ô nhập. Luôn dùng
<label>(có thể ẩn bằng CSSvisually-hidden). - Không chứa thông tin quan trọng: Ví dụ sai:
placeholder="Định dạng: DD/MM/YYYY"→ đúng:<label>Ngày sinh (DD/MM/YYYY)</label>. - Màu sắc: Mặc định xám nhạt. Tùy chỉnh bằng CSS:
::placeholder { color: #999; opacity: 1; } /* Firefox cần opacity:1 */
:placeholder-shown { border-color: #ccc; } /* Trạng thái đang hiện placeholder */
- Độ dài: Nên ngắn gọn (< 100 ký tự), không xuống dòng.
- Đổi động: Có thể thay
placeholderqua JS theo ngữ cảnh (ví dụ: đổi gợi ý khi chọn loại form khác).
Placeholder vs defaultValue vs value
| Thuộc tính | Hiển thị khi rỗng | Gửi khi submit | User chỉnh sửa |
|---|---|---|---|
| placeholder | Có (mờ) | Không | Không (chỉ gợi ý) |
| defaultValue | Có (bình thường) | Không (chỉ value gửi) | Có |
| value | Có (bình thường) | Có | Có |