Sử dụng thuộc tính draggable với giá trị true hoặc false để bật/tắt khả năng kéo thả cho phần tử. Mặc định: false (trừ <a> có href, <img>, <selection>).
Ví dụ hoàn chỉnh
<!DOCTYPE HTML>
<html>
<head>
<style>
.drag { float: left; width: 100px; height: 35px; border: 2px dashed #876587; margin: 15px; padding: 10px; }
</style>
</head>
<body>
<div class="drag" ondrop="drop(event)" ondragover="dropNow(event)">
<p ondragstart="dragStart(event)" ondrag="draggingNow(event)" draggable="true" id="dragtarget">Kéo tôi!</p>
</div>
<div class="drag" ondrop="drop(event)" ondragover="dropNow(event)"></div>
<div id="box"></div>
<p>Kéo hộp trái sang phải hoặc ngược lại.</p>
<script>
function dragStart(e) { e.dataTransfer.setData("Text", e.target.id); }
function draggingNow(e) { document.getElementById("box").innerHTML = "Đã kéo thành công!"; }
function dropNow(e) { e.preventDefault(); }
function drop(e) {
e.preventDefault();
var data = e.dataTransfer.getData("Text");
e.target.appendChild(document.getElementById(data));
document.getElementById("box").innerHTML = "Phần tử đã thả thành công!";
}
</script>
</body>
</html>
Các sự kiện Drag & Drop
| Sự kiện (phần tử kéo) | Sự kiện (phần tử thả) |
|---|---|
| dragstart | dragenter |
| drag | dragover |
| dragend | dragleave |
| drop |
Lưu ý
- Phải
e.preventDefault()trongdragoverđể cho phép drop. dataTransfer.setData()/getData()truyền dữ liệu.- Trên mobile: cần xử lý touch events riêng (Pointer Events).