以下是一个使用JavaScript实现的按照数字顺序拖动选定输入框的示例代码:
HTML代码:
JavaScript代码:
// 获取所有可拖动的输入框
const draggables = document.querySelectorAll('.draggable');
let draggedElement = null; // 当前被拖动的元素
// 为每个可拖动的输入框添加拖动事件处理程序
draggables.forEach(draggable => {
draggable.addEventListener('dragstart', () => {
draggedElement = draggable;
});
draggable.addEventListener('dragover', (e) => {
e.preventDefault();
});
draggable.addEventListener('drop', () => {
if (draggedElement !== draggable) {
// 获取被拖动元素和目标元素的顺序
const draggedOrder = parseInt(draggedElement.dataset.order);
const droppedOrder = parseInt(draggable.dataset.order);
// 交换被拖动元素和目标元素的位置
if (draggedOrder < droppedOrder) {
draggedElement.parentNode.insertBefore(draggedElement, draggable.nextSibling);
} else {
draggedElement.parentNode.insertBefore(draggedElement, draggable);
}
// 更新所有输入框的顺序
updateOrder();
}
});
});
// 更新所有输入框的顺序
function updateOrder() {
const inputContainers = document.getElementById('container');
const inputs = inputContainers.querySelectorAll('.draggable');
inputs.forEach((input, index) => {
input.dataset.order = index + 1;
});
}
在上面的示例代码中,我们首先获取所有具有.draggable
类的输入框元素,并为每个输入框添加拖动事件处理程序。在拖动开始时,我们将当前被拖动的元素保存在draggedElement
变量中。然后,我们在目标元素上添加dragover
事件监听器来防止默认的拖动行为。最后,在目标元素上添加drop
事件监听器,在拖动结束时进行元素交换和顺序更新。
更新顺序时,我们使用updateOrder
函数来获取所有输入框元素,并为它们更新data-order
属性的值,以反映它们的新顺序。
请注意,为了使输入框元素可拖动,您可能需要添加一些自定义样式或使用库(如jQuery UI的可拖动模块)来处理拖动操作。上面的代码示例仅展示了实现逻辑,您可能需要根据自己的需求进行调整和扩展。
上一篇:按照数字顺序排序工作区